Betrachten Sie das folgende Beispiel:
" Hello this is a long string! "
Ich möchte das umwandeln in:
"Hello this is a long string!"
objective-c
ios
nsstring
hfossli
quelle
quelle
Regex und NSCharacterSet helfen Ihnen gerne weiter. Diese Lösung schneidet führende und nachfolgende Leerzeichen sowie mehrere Leerzeichen ab.
Protokollierung
final
gibtMögliche alternative Regex-Muster:
[ ]+
[ \\t]+
\\s+
Leistungsabfall
Die einfache Erweiterung, Leistung, Anzahl der Codezeilen und die Anzahl der erstellten Objekte machen diese Lösung angemessen.
quelle
stringByReplacingOccurrencesOfString:
. Ich kann nicht glauben, dass ich das nicht wusste.Eigentlich gibt es dafür eine sehr einfache Lösung:
( Quelle )
quelle
Mit einem regulären Ausdruck, aber ohne externe Rahmenbedingungen:
quelle
NSRegularExpressionSearch
sagt, dass es nur mit denrangeOfString:...
MethodenEine einzeilige Lösung:
quelle
Das sollte es tun ...
quelle
Eine weitere Option für Regex ist RegexKitLite , das sich sehr einfach in ein iPhone-Projekt einbetten lässt:
quelle
Versuche dies
quelle
Hier ist ein Ausschnitt aus einer
NSString
Erweiterung, in der"self"
sich dieNSString
Instanz befindet. Es kann verwendet werden zusammenhängende Leerzeichen in ein einzelnes Leerzeichen zu kollabieren , indem in vorbei[NSCharacterSet whitespaceAndNewlineCharacterSet]
und' '
zu den zwei Argumenten.quelle
Alternative Lösung: Besorgen Sie sich eine Kopie von OgreKit (der Cocoa-Bibliothek für reguläre Ausdrücke).
Die ganze Funktion ist dann:
Kurz und bündig.
Wenn Sie nach der schnellsten Lösung suchen,
NSScanner
funktioniert eine sorgfältig erstellte Reihe von Anweisungen wahrscheinlich am besten. Dies ist jedoch nur erforderlich, wenn Sie große Textblöcke (viele Megabyte) verarbeiten möchten.quelle
Laut @Mathieu ist Godart die beste Antwort, aber es fehlt eine Zeile. Alle Antworten reduzieren nur den Abstand zwischen den Wörtern. Wenn jedoch Tabulatoren oder Tabulatoren vorhanden sind, lautet dies wie folgt: "Dies ist Text \ t und \ tTab zwischen, so weiter "In dreizeiligem Code werden wir: Die Zeichenfolge, die wir möchten, reduziert Leerzeichen
Das Ergebnis ist
Ohne Tab zu ersetzen, lautet das Ergebnis:
quelle
Sie können auch ein einfaches while-Argument verwenden. Es gibt dort keine RegEx-Magie, daher ist es möglicherweise einfacher, sie in Zukunft zu verstehen und zu ändern:
quelle
Das Befolgen von zwei regulären Ausdrücken würde je nach den Anforderungen funktionieren
Wenden Sie dann die Instanzmethode von nsstring an
stringByReplacingOccurrencesOfString:withString:options:range:
an, um sie durch einen einzelnen Leerraum zu ersetzen.z.B
Hinweis: Ich habe die 'RegexKitLite'-Bibliothek für die oben genannten Funktionen für iOS 5.x und höher nicht verwendet.
quelle