2016-11-01 12 views
1

ich mehrere Zeilen in einem String haben, zum Beispiel:Swift ersetzen volle Linie in String

let str = "Mieter: Hannes Tester \nVerwalter: Michael Karner \n" 

Jetzt möchte ich den ganzen Satz zwischen „Mieter“ und dem Zeilenumbruch entfernen. So sollte das Ergebnis sein:

let str = "Verwalter: Michael Karner \n" 

Ich könnte mit Regex überprüfen, aber ich bin nur in der Lage, die Zeichenfolge zwischen zwei Wörtern zu erhalten. Zum Beispiel mit:

if let match = str.rangeOfString("(?<=Mieter)[^\n]+", options: .RegularExpressionSearch) { 
    print(str.substringWithRange(match)) // between 
} 

Aber wie kann ich eine ganze Zeile ersetzen?

Edit:

Es funktioniert nicht mehr, wenn sein zwischen einem String:

let str = "Test \n Mieter: \n Hausverwalter: \n Firma: \n" 

str.stringByReplacingOccurrencesOfString("^Mieter[^\n]+\\s", withString: "", options: .RegularExpressionSearch, range: nil) 

// so "Mieter \n" is not being replaced. 

Antwort

2

Verwenden replacingOccurrencesOf

let str = "Mieter: Hannes Tester \nVerwalter: Michael Karner \n" 
str.replacingOccurrences(of: "^Mieter[^\n]+\\s", with: "", options: .regularExpression) 

Dieser Swift ist 3-Code

bearbeiten :

Wenn der Teilstring nicht am Anfang des Strings steht, entfernen Sie das führende Kästchen (^).

+0

Danke. Hast du es auch für Swift 2.3? Es ist nicht: str.stringByReplacingOccurrencesOfString ("^ Mieter [^ \ n] + \\ s", withString: "") – derdida

+0

Ok es gefunden: str.stringByReplacingOccurrencesOfString ("^ Mieter [^ \ n] + \\ s", withString : "", Optionen: .RegularExpressionSearch, Bereich: nil) – derdida

+0

Bitte verwenden Sie Code-Vervollständigung, 'stringByReplacing ...' ist wahrscheinlich korrekt. – vadian