Мне нужен способ удалить первый символ из строки, которая является пространством. Я ищу метод или даже расширение для типа String, которое я могу использовать для вырезания символа строки.
Как мне удалить все начальные пробелы из строки? - быстрый
Ответ 1
Чтобы удалить ведущие и завершающие пробелы:
let trimmedString = string.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
Swift 3/Swift 4:
let trimmedString = string.trimmingCharacters(in: .whitespaces)
Ответ 2
Правильный способ, когда вы хотите удалить все виды пробелов (на основе этого ответа SO):
extension String {
var stringByRemovingWhitespaces: String {
let components = componentsSeparatedByCharactersInSet(.whitespaceCharacterSet())
return components.joinWithSeparator("")
}
}
Swift 3. 0+ (3.0, 3.1, 3.2, 4.0)
extension String {
func removingWhitespaces() -> String {
return components(separatedBy: .whitespaces).joined()
}
}
РЕДАКТИРОВАТЬ
Этот ответ был опубликован, когда вопрос касался удаления всех пробелов, вопрос был отредактирован так, чтобы упоминать только ведущие пробелы. Если вы хотите удалить только первые пробелы, используйте следующее:
extension String {
func removingLeadingSpaces() -> String {
guard let index = firstIndex(where: { !CharacterSet(charactersIn: String($0)).isSubset(of: .whitespaces) }) else {
return self
}
return String(self[index...])
}
}
Ответ 3
Это расширение String удаляет все пробелы из строки, а не только конечные пробелы...
extension String {
func replace(string:String, replacement:String) -> String {
return self.replacingOccurrences(of: string, with: replacement, options: NSString.CompareOptions.literal, range: nil)
}
func removeWhitespace() -> String {
return self.replace(string: " ", replacement: "")
}
}
Пример:
let string = "The quick brown dog jumps over the foxy lady."
let result = string.removeWhitespace() // Thequickbrowndogjumpsoverthefoxylady.
Ответ 4
Swift 3
Вы можете просто использовать этот метод для удаления всех нормальных пробелов в строке (не учитывайте все типы пробелов):
let myString = " Hello World ! "
let formattedString = myString.replacingOccurrences(of: " ", with: "")
Результат будет:
HelloWorld!
Ответ 5
Вы также можете использовать регулярное выражение.
let trimmedString = myString.stringByReplacingOccurrencesOfString("\\s", withString: "", options: NSStringCompareOptions.RegularExpressionSearch, range: nil)
Ответ 6
Для Swift 3.0+ см. другие ответы. Это теперь старый ответ для Swift 2.x
Как уже было сказано выше, поскольку вы заинтересованы в удалении первого символа, метод экземпляра .stringByTrimmingCharactersInSet() будет работать красиво:
myString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
Вы также можете сделать свои собственные наборы символов, чтобы обрезать границы ваших строк, например:
myString.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "<>"))
Существует также встроенный метод экземпляра для устранения или замены подстрок, называемых stringByReplacingOccurrencesOfString (target: String, replacement: String). Он может удалять пробелы или любые другие шаблоны, которые происходят где угодно в вашей строке
Вы можете указать параметры и диапазоны, но не нужно:
myString.stringByReplacingOccurrencesOfString(" ", withString: "")
Это простой способ удалить или заменить любой повторяющийся шаблон символов в вашей строке и может быть привязан, хотя каждый раз через него приходится проходить еще один проход по всей вашей строке, что снижает эффективность. Итак, вы можете сделать это:
myString.stringByReplacingOccurrencesOfString(" ", withString: "").stringByReplacingOccurrencesOfString(",", withString: "")
... но это займет в два раза больше.
. stringByReplacingOccurrencesOfString() документация с сайта Apple
Связывание этих методов экземпляра String иногда может быть очень удобным для отдельных преобразований, например, если вы хотите преобразовать короткий блок NSData в шестнадцатеричную строку без пробелов в одной строке, вы можете сделать это с помощью Swift, встроенного в String-интерполяцию и некоторые обрезки и замены:
("\(myNSDataBlob)").stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "<>")).stringByReplacingOccurrencesOfString(" ", withString: "")
Ответ 7
Для Swift 3.0
import Foundation
var str = " Hear me calling"
extension String {
var stringByRemovingWhitespaces: String {
return components(separatedBy: .whitespaces).joined()
}
}
str.stringByRemovingWhitespaces // Hearmecalling
Ответ 8
Swift 4
Отличный случай, чтобы использовать регулярное выражение:
" this is wrong contained teee xt "
.replacingOccurrences(of: "^\\s+|\\s+|\\s+$",
with: "",
options: .regularExpression)
// thisiswrongcontainedteeext
Ответ 9
Я бы использовал это расширение, чтобы быть гибким и подражать тому, как это делают другие коллекции:
extension String {
func filter(pred: Character -> Bool) -> String {
var res = String()
for c in self.characters {
if pred(c) {
res.append(c)
}
}
return res
}
}
"this is a String".filter { $0 != Character(" ") } // "thisisaString"
Ответ 10
Если вы хотите удалить пробелы с фронта (и обратно), но не на середину, вы должны использовать stringByTrimmingCharactersInSet
let dirtyString = " First Word "
let cleanString = dirtyString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
Если вы хотите удалить пробелы из любой точки строки, вы можете посмотреть на stringByReplacing...
Ответ 11
Вы также можете попробовать это
let updatedString = searchedText?.stringByReplacingOccurrencesOfString(" ", withString: "-")
Ответ 12
Попробуйте функциональное программирование, чтобы удалить пробелы:
extension String {
func whiteSpacesRemoved() -> String {
return self.filter { $0 != Character(" ") }
}
}
Ответ 13
версия Swift 3
//This function trim only white space:
func trim() -> String
{
return self.trimmingCharacters(in: CharacterSet.whitespaces)
}
//This function trim whitespeaces and new line that you enter:
func trimWhiteSpaceAndNewLine() -> String
{
return self.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
}
Ответ 14
extension String {
var removingWhitespaceAndNewLines: String {
return removing(.whitespacesAndNewlines)
}
func removing(_ forbiddenCharacters: CharacterSet) -> String {
return String(unicodeScalars.filter({ !forbiddenCharacters.contains($0) }))
}
}
Ответ 15
Если кто-нибудь удалит лишний пробел из строки, например, = "This is the demo text remove extra space between the words."
Вы можете использовать эту функцию в Swift 4.
func removeSpace(_ string: String) -> String{
var str: String = String(string[string.startIndex])
for (index,value) in string.enumerated(){
if index > 0{
let indexBefore = string.index(before: String.Index.init(encodedOffset: index))
if value == " " && string[indexBefore] == " "{
}else{
str.append(value)
}
}
}
return str
}
и результат будет
"This is the demo text remove extra space between the words."
Ответ 16
Обрезка пробелов в Свифт 4
let strFirstName = txtFirstName.text?.trimmingCharacters(in:
CharacterSet.whitespaces)
Ответ 17
Swift 4, 4.2 и 5
Убрать пространство только спереди и с конца
let str = " Akbar Code "
let trimmedString = str.trimmingCharacters(in: .whitespacesAndNewlines)
Удалить пробелы из любого места в строке
let stringWithSpaces = " The Akbar khan code "
let stringWithoutSpaces = stringWithSpaces.replacingOccurrences(of: " ", with: "")
Ответ 18
Для меня следующая строка используется для удаления пробелов.
let result = String(yourString.filter {![" ", "\t", "\n"].contains($0)})
Ответ 19
Еще один ответ, иногда входная строка может содержать более одного пробела между словами. Если вам нужно стандартизировать, чтобы между словами было только 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 !"
Ответ 20
string = string.filter ({!" ".contains($0) })
Ответ 21
Swift 3 версия ответа BadmintonCat
extension String {
func replace(_ string:String, replacement:String) -> String {
return self.replacingOccurrences(of: string, with: replacement, options: NSString.CompareOptions.literal, range: nil)
}
func removeWhitespace() -> String {
return self.replace(" ", replacement: "")
}
}
Ответ 22
class SpaceRemover
{
func SpaceRemover(str :String)->String
{
var array = Array(str)
var i = array.count
while(array.last == " ")
{
var array1 = [Character]()
for item in 0...i - 1
{
array1.append(array[item])
}
i = i - 1
array = array1
print(array1)
print(array)
}
var arraySecond = array
var j = arraySecond.count
while(arraySecond.first == " ")
{
var array2 = [Character]()
if j > 1
{
for item in 1..<j
{
array2.append(arraySecond[item])
}
}
j = j - 1
arraySecond = array2
print(array2)
print(arraySecond)
}
print(arraySecond)
return String(arraySecond)
}
}
Ответ 23
Чтобы удалить все пробелы из строки:
let space_removed_string = (yourstring?.components(separatedBy: " ").joined(separator: ""))!