Как мне удалить все начальные пробелы из строки? - быстрый

Мне нужен способ удалить первый символ из строки, которая является пространством. Я ищу метод или даже расширение для типа 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: ""))!