2015-02-16 6 views

ответ

3

Отображается, таким образом, количество элементов должно быть сохранено. Во втором случае вы удалить элементов. Ваш пример не удастся даже в случае, если вы замените " " на --.

Вы можете предпочесть использовать filter:

let replaced = String(filter(aString.generate()) { $0 != " "}) 
11

Перечисляя строка дает последовательность символов , так $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: "") 
3

Если вы хотите удалить пробелы до и после строки, что очень полезно в пользовательских формах ввода, вы можете использовать:

let replaced = aString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet()) 

Вы также можете применить его непосредственно к текстовому полю.

2

попробовать это одно:

let strArray0 = strArray1.map { $0.stringByTrimmingCharactersInSet(.whitespaceAndNewlineCharacterSet()) } 

Надеется, что это помогает

5

Если вы хотите удалить пробельные из строки, то просто передать строку с помощью функции stringByReplacingOccurrencesOfString, как показано ниже,

let replacedString = string.stringByReplacingOccurrencesOfString(" ", withString: "") 

для текста Поля, вы можете непосредственно применить объект UITextField,

let replacedString = textField.text!.stringByReplacingOccurrencesOfString(" ", withString: "") 
5

Это должно работать как Свифта 2.2:

let replaced = String(aString.characters.filter {$0 != " "}) 
1

В 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  ") 
1

Если вы хотите, чтобы удалить все непечатаемые в любом месте в 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 
Смежные вопросы