Это работаетКак удалить пробелы в строках в Swift?
let replaced = String(map(aString.generate()) {
$0 == " " ? "-" : $0 })
и это не
let replaced = String(map(aString.generate()) {
$0 == " " ? "" : $0 })
Почему?
Это работаетКак удалить пробелы в строках в Swift?
let replaced = String(map(aString.generate()) {
$0 == " " ? "-" : $0 })
и это не
let replaced = String(map(aString.generate()) {
$0 == " " ? "" : $0 })
Почему?
Отображается, таким образом, количество элементов должно быть сохранено. Во втором случае вы удалить элементов. Ваш пример не удастся даже в случае, если вы замените " "
на --
.
Вы можете предпочесть использовать filter
:
let replaced = String(filter(aString.generate()) { $0 != " "})
Перечисляя строка дает последовательность символов , так $0
внутри закрытие имеет тип Character
. Это компилирует
{ $0 == " " ? "-" : $0 }
, потому что "-"
в этом контексте интерпретируется как характер буквальным и, следовательно, одного и того же типа, как $0
. Но
{ $0 == " " ? "" : $0 }
не компилируется, потому что ""
является не литерой (и в условном выражении a ? b : c
операнды b
и c
должны иметь одинаковый тип).
Вы можете исправить это путем преобразования $0
в строку:
{ $0 == " " ? "" : String($0) }
но теперь отображение возвращает массив строк вместо массива символов. Таким образом, вместо того, чтобы из String()
конструктора вы должны присоединиться результаты:
let replaced = "".join(map(aString) { $0 == " " ? "" : String($0) })
// Swift 2/Xcode 7:
let replaced = "".join(aString.characters.map({ $0 == " " ? "" : String($0) }))
(Обратите внимание, что вызов generate()
явно не требуется.)
Конечно же результат также может быть достигнуто с
let replaced = aString.stringByReplacingOccurrencesOfString(" ", withString: "")
Если вы хотите удалить пробелы до и после строки, что очень полезно в пользовательских формах ввода, вы можете использовать:
let replaced = aString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
Вы также можете применить его непосредственно к текстовому полю.
попробовать это одно:
let strArray0 = strArray1.map { $0.stringByTrimmingCharactersInSet(.whitespaceAndNewlineCharacterSet()) }
Надеется, что это помогает
Если вы хотите удалить пробельные из строки, то просто передать строку с помощью функции stringByReplacingOccurrencesOfString, как показано ниже,
let replacedString = string.stringByReplacingOccurrencesOfString(" ", withString: "")
для текста Поля, вы можете непосредственно применить объект UITextField,
let replacedString = textField.text!.stringByReplacingOccurrencesOfString(" ", withString: "")
Это должно работать как Свифта 2.2:
let replaced = String(aString.characters.filter {$0 != " "})
В Swift 3.0 DO в
func RemoveWhiteSpace(aString:String) -> String
{
let replaced = aString.trimmingCharacters(in: NSCharacterSet.whitespaces)
return replaced
}
И использовать как этот
let nonWhiteSpaceStr = self.RemoveWhiteSpace(aString: "I have white Space ")
Если вы хотите, чтобы удалить все непечатаемые в любом месте в String
Я придумал это решение для Swift 3.0:
let number = "+000 000 000"
let nonWhiteCharacters = number.unicodeScalars.filter {
false == NSCharacterSet.whitespacesAndNewlines.contains($0)
}.map(Character.init)
let whitespacelessNumber = String(nonWhiteCharacters)
или даже лучше (вы будете нуждаться в родовое расширение на последовательности):
extension Sequence {
public func reduce<Result>(_ result: (Self) throws -> Result) rethrows -> Result {
return try result(self)
}
}
, а затем вы можете написать:
let whitespacelessNumber = number.unicodeScalars.filter {
false == NSCharacterSet.whitespacesAndNewlines.contains($0)
}.map(Character.init).reduce { String($0) }
, где вы можете также заменить NSCharacterSet.whitespacesAndNewlines
для любого другого наборы символов:
NSCharacterSet.controlCharacters
NSCharacterSet.whitespaces
NSCharacterSet.whitespacesAndNewlines
NSCharacterSet.decimalDigits
NSCharacterSet.letters
NSCharacterSet.lowercaseLetters
NSCharacterSet.uppercaseLetters
NSCharacterSet.nonBaseCharacters
NSCharacterSet.alphanumerics
NSCharacterSet.decomposables
NSCharacterSet.illegalCharacters
NSCharacterSet.punctuationCharacters
NSCharacterSet.capitalizedLetters
NSCharacterSet.symbols
NSCharacterSet.newline