Alternative ohne reguläre Ausdrücke, reine Swift (kein Überbrückungs zu NSString
) Lösung:
let spaced = "This is a string with a lot of spaces!"
let under = spaced.characters.split(" ", allowEmptySlices: false).map(String.init).joinWithSeparator("_")
Alternate, alternative Version, die keine führende und nachfolgende Leerzeichen entfernen, wenn sich die Umwandlung. Leicht Kürze wegen verschleiert ... ;-)
let reduced = String(spaced.characters.reduce([Character]()) { let n = $1 == " " ? "_" : $1; var o = $0; o.append(n); guard let e = $0.last else { return o }; return e == "_" && n == "_" ? $0 : o })
Es gibt wahrscheinlich eine clevere Lösung flatMap()
beteiligt, aber ich werde es jemand klüger als ich verlassen!
Das ist eine ziemlich glatte Verwendung von Filter. –
@NateBirkholz Ich möchte jedoch darauf hinweisen, dass diese Methode keine Gruppen von Leerzeichen vor und nach dem ersten bzw. letzten Wort ersetzt; Diese Leerzeichen werden einfach entfernt (z. B. "Dies ist eine Zeichenfolge mit vielen Leerzeichen!") "wird das gleiche Ergebnis wie für" "Dies ist eine Zeichenfolge mit vielen Leerzeichen!"). – dfri
Das ist genau das, was ich brauche, so dass das kein Problem sein wird – sloeberGJ