Как мне удалить все начальные пробелы из строки? - быстро
170
Мне нужен способ удалить первый символ из строки, которая является пробелом. Я ищу метод или даже расширение для типа String, которое я могу использовать, чтобы вырезать символ строки.
Этот ответ был опубликован, когда вопрос касался удаления всех пробелов, вопрос был отредактирован так, чтобы упоминать только ведущие пробелы. Если вы хотите удалить только первые пробелы, используйте следующее:
extensionString{func removingLeadingSpaces()->String{guardlet index = firstIndex(where:{!CharacterSet(charactersIn:String($0)).isSubset(of:.whitespaces)})else{returnself}returnString(self[index...])}}
также .components (separaBy: .whitespacesAndNewlines) также для новых строк
Дерек
Это должен быть функционал, а не вар
Якуб Трухларж
1
Из-за логики функции . Вы делаете вычисляемое свойство, когда вы должны сделать функцию . Это делает smt, а не удерживает значение или вычисляет его из другого. Посмотрите на: stackoverflow.com/questions/24035276/…
@ JakubTruhlář Вы говорите: «Это должен быть функционал, а не вар» - это звучит очень похоже на то, что вы констатируете факт, а не ваше мнение. Если вы прочитаете ответы на связанный вопрос, вы увидите, что, хотя он «имеет смысл» для вас, для других людей… не обязательно.
Эшли Миллс
82
Это расширение String удаляет все пробелы из строки, а не только конечные пробелы ...
Для Swift 3.0+ смотрите другие ответы. Теперь это унаследованный ответ для Swift 2.x
Как уже было сказано выше, поскольку вы заинтересованы в удалении первого символа, метод экземпляра .stringByTrimmingCharactersInSet () будет работать хорошо:
Существует также встроенный метод экземпляра для удаления или замены подстрок, называемый stringByReplacingOccurferencesOfString (target: String, replace: String) . Он может удалить пробелы или любые другие шаблоны, которые встречаются в любом месте вашей строки
Вы можете указать параметры и диапазоны, но не нужно:
Это простой способ удалить или заменить любой повторяющийся набор символов в вашей строке, и его можно объединить в цепочку, хотя каждый раз, когда он проходит через него, приходится проходить еще раз через всю строку, что снижает эффективность. Так что вы можете сделать это:
Цепочка этих методов экземпляра String иногда может быть очень удобной для однократных преобразований, например, если вы хотите преобразовать короткий BLOB-объект NSData в шестнадцатеричную строку без пробелов в одной строке, вы можете сделать это с помощью встроенной в Swift интерполяции String и некоторой обрезки и замена:
Я бы использовал это расширение, чтобы быть гибким и подражать тому, как это делают другие коллекции:
extensionString{func filter(pred:Character->Bool)->String{var res =String()for c inself.characters {if pred(c){
res.append(c)}}return res
}}"this is a String".filter { $0!=Character(" ")}//"thisisaString"
//This function trim only white space:
func trim()->String{returnself.trimmingCharacters(in:CharacterSet.whitespaces)}//This function trim whitespeaces and new line that you enter:
func trimWhiteSpaceAndNewLine()->String{returnself.trimmingCharacters(in:CharacterSet.whitespacesAndNewlines)}
Еще один ответ, иногда входная строка может содержать более одного пробела между словами. Если вам нужно стандартизировать, чтобы между словами было только 1 пробел, попробуйте это (Swift 4/5)
let inputString =" a very strange text ! "let validInput = inputString.components(separatedBy:.whitespacesAndNewlines).filter { $0.count >0}.joined(separator:" ")
print(validInput)//"a very strange text !"
Работает только для "" (не учитывает другие виды whitesapce)
fpg1503
Потому что ваш ответ неверен. Ответ, на который вы предоставили обновление, также неверен. Есть несколько видов пробелов, и поэтому использование whitespaceCharacterSet- это лучшая практика.
Ответы:
Чтобы удалить начальные и конечные пробелы:
Свифт 3 / Свифт 4:
источник
NSCharacterSet.whitespaceAndNewlineCharacterSet()
если вы хотите обрезать символы новой строки.Правильный способ удаления всевозможных пробелов (на основе этого ответа SO ):
Swift 3.0+ (3.0, 3.1, 3.2, 4.0)
РЕДАКТИРОВАТЬ
Этот ответ был опубликован, когда вопрос касался удаления всех пробелов, вопрос был отредактирован так, чтобы упоминать только ведущие пробелы. Если вы хотите удалить только первые пробелы, используйте следующее:
источник
Это расширение String удаляет все пробелы из строки, а не только конечные пробелы ...
Пример:
источник
Swift 3
Вы можете просто использовать этот метод для удаления всех обычных пробелов в строке (не учитывает все типы пробелов):
Результат будет:
источник
Вы также можете использовать регулярные выражения.
источник
Для Swift 3.0+ смотрите другие ответы. Теперь это унаследованный ответ для Swift 2.x
Как уже было сказано выше, поскольку вы заинтересованы в удалении первого символа, метод экземпляра .stringByTrimmingCharactersInSet () будет работать хорошо:
Вы также можете создавать свои собственные наборы символов, чтобы обрезать границы ваших строк, например:
Существует также встроенный метод экземпляра для удаления или замены подстрок, называемый stringByReplacingOccurferencesOfString (target: String, replace: String) . Он может удалить пробелы или любые другие шаблоны, которые встречаются в любом месте вашей строки
Вы можете указать параметры и диапазоны, но не нужно:
Это простой способ удалить или заменить любой повторяющийся набор символов в вашей строке, и его можно объединить в цепочку, хотя каждый раз, когда он проходит через него, приходится проходить еще раз через всю строку, что снижает эффективность. Так что вы можете сделать это:
... но это займет вдвое больше времени.
Документация .stringByReplacingOccursionsOfString () с сайта Apple
Цепочка этих методов экземпляра String иногда может быть очень удобной для однократных преобразований, например, если вы хотите преобразовать короткий BLOB-объект NSData в шестнадцатеричную строку без пробелов в одной строке, вы можете сделать это с помощью встроенной в Swift интерполяции String и некоторой обрезки и замена:
источник
Для Swift 3.0
источник
Swift 4
Отличный случай, чтобы использовать регулярное выражение:
источник
Я бы использовал это расширение, чтобы быть гибким и подражать тому, как это делают другие коллекции:
источник
Если вы хотите удалить пробелы спереди (и сзади), но не посередине, вы должны использовать
stringByTrimmingCharactersInSet
Если вы хотите удалить пробелы в любом месте строки, вы можете посмотреть на stringByReplacing ...
источник
" First Word "
выходных данных"First Word"
).Свифт 4, 4.2 и 5
Удалить пространство только спереди и сзади
Удалить пробелы из любого места в строке
источник
Вы также можете попробовать это
источник
Попробуйте функциональное программирование, чтобы удалить пробелы:
источник
источник
Если кто-нибудь удаляет лишний пробел из строки, например, =
"This is the demo text remove extra space between the words."
Вы можете использовать эту функцию в Swift 4.
и результат будет
источник
Привет, это может быть поздно, но стоит попробовать. Это из файла детской площадки. Вы можете сделать это расширением String.
Это написано в Swift 5.3
Способ 1:
Способ 2:
источник
Версия Swift 3
источник
Обрезка пробелов в Свифт 4
источник
Еще один ответ, иногда входная строка может содержать более одного пробела между словами. Если вам нужно стандартизировать, чтобы между словами было только 1 пробел, попробуйте это (Swift 4/5)
источник
Для меня следующая строка используется для удаления пробелов.
источник
источник
Swift 3 версия ответа BadmintonCat
источник
whitespaceCharacterSet
- это лучшая практика.источник
Чтобы удалить все пробелы из строки:
источник