Рассмотрим следующий пример:
" Hello this is a long string! "
Я хочу преобразовать это в:
"Hello this is a long string!"
objective-c
ios
nsstring
hfossli
источник
источник
Regex и NSCharacterSet здесь, чтобы помочь вам. Это решение обрезает начальные и конечные пробелы, а также несколько пробелов.
Регистрация
final
даетВозможные альтернативные шаблоны регулярных выражений:
[ ]+
[ \\t]+
\\s+
Краткое описание производительности
Простота расширения, производительность, количество строк кода и количество созданных объектов делают это решение подходящим.
источник
stringByReplacingOccurrencesOfString:
. Не могу поверить, что не знал этого.На самом деле, есть очень простое решение:
( Источник )
источник
С регулярным выражением, но без необходимости во внешней структуре:
источник
NSRegularExpressionSearch
указано, что он работает только сrangeOfString:...
методамиОднострочное решение:
источник
Это должно сработать ...
источник
Другой вариант регулярного выражения - RegexKitLite , который очень легко встроить в проект iPhone:
источник
Попробуй это
источник
Вот фрагмент из
NSString
расширения, где"self"
находитсяNSString
экземпляр. Его можно использовать для свертывания непрерывных пробелов в одно пространство, передавая[NSCharacterSet whitespaceAndNewlineCharacterSet]
и' '
двум аргументам.источник
Альтернативное решение: получите копию OgreKit (библиотека регулярных выражений Какао).
Тогда вся функция:
Коротко и мило.
Если вы ищете самое быстрое решение,
NSScanner
вероятно, лучше всего подойдет тщательно продуманная серия инструкций, но это будет необходимо только в том случае, если вы планируете обрабатывать огромные (многие мегабайты) блоки текста.источник
в соответствии с @Mathieu Godart - лучший ответ, но какая-то строка отсутствует, все ответы просто уменьшают пространство между словами, но если есть вкладки или вкладка на месте, например: "это текст \ t и \ tTab между, так далее "в трехстрочном коде мы: строка, которую мы хотим уменьшить, пробелы
результат
без замены вкладки результат будет:
источник
Вы также можете использовать простой аргумент while. В нем нет магии RegEx, поэтому, возможно, его будет легче понять и изменить в будущем:
источник
Следующие два регулярных выражения будут работать в зависимости от требований
Затем примените метод экземпляра nsstring,
stringByReplacingOccurrencesOfString:withString:options:range:
чтобы заменить их одним пробелом.например
Примечание: я не использовал библиотеку RegexKitLite для вышеперечисленных функций для iOS 5.x и выше.
источник