2014-07-02 14 views
18

Witajcie, mam zmienną, która zawiera symbol lub postać Nie wiem, jak to powiedzieć na "\" w języku angielskim ... Jak zamienić wszystkie \ z pustym miejscem w mojej zmiennej?Swift - Zastąp postać w łańcuchu

var content = theContent["content"] as String 
self.contentLabel.text = content.stringByReplacingOccurrencesOfString(<#target: String#>, withString: <#String#>, options: <#NSStringCompareOptions#>, range: <#Range<String.Index>?#>) 

Jak wypełnić tę przestrzeń lub mój sintax jest nie tak, gdy używam content.string ... a potem w #target Używam ten sam ciąg? Ktoś, kto nauczył się Swift tak szybko? : D

Odpowiedz

28

Użyj następującego

self.contentLabel.text = content.stringByReplacingOccurrencesOfString("\\", withString: " ", options: NSStringCompareOptions.LiteralSearch, range: nil) 
14

Jeśli chcesz napisać to w czystej Swift, spróbuj:

self.contentLabel.text = Array(myString).reduce("") { $1 == "\\" ? $0 : "\($0)\($1)" } 

Jest to krótka droga ręka piśmie:

Array(myString).reduce("", combine: { (inputString, character) -> String in 
    if character == "\\" { 
     return inputString 
    } else { 
     return "\(inputString)\(character)" 
    } 
}) 

To zamienia myString na Array z Character s, a następnie używa funkcji reduce, aby dołączyć je ponownie do String, ale zastępując pusty łańcuch w miejsce odwróconych ukośników

+0

Co masz na myśli mówiąc "czysty szybki"? To wygląda na intensywne. Czy możesz wyjaśnić, co dzieje się w tym przykładzie? – Aggressor

+3

Przez * czysty * Swift, mam na myśli to, że nie używa żadnych klas Foundation (NSString, na przykład) - zaktualizowałem moją odpowiedź dla jasności –