Wie entferne ich doppelte Leerzeichen (einschließlich Tabulatoren, Zeilenumbrüche, Leerzeichen usw.) in einer Zeichenfolge mit Java?
java
string
whitespace
hirnlos
quelle
quelle
\s+
aber was bedeutet 2 Backslash \\?"\\"
stellt die Zeichenfolge dar, die aus einem einzelnen Backslash besteht. Also um\s+
dich zu repräsentieren schreibst"\\s+"
.Sie können den regulären Ausdruck verwenden
und
Ersetzen Sie es durch
$1
.Java-Code:
Wenn die Eingabe ist, erhalten
"foo\t\tbar "
Sie"foo\tbar "
als Ausgabe.Wenn die Eingabe jedoch ist
"foo\t bar"
, bleibt sie unverändert, da sie keine aufeinanderfolgenden Leerzeichen enthält.Wenn Sie alle Leerzeichen (Leerzeichen, vertikale Registerkarte, horizontale Registerkarte, Wagenrücklauf, Formularvorschub, neue Zeile) als Leerzeichen behandeln, können Sie den folgenden regulären Ausdruck verwenden, um eine beliebige Anzahl aufeinanderfolgender Leerzeichen durch ein einzelnes Leerzeichen zu ersetzen :
Wenn Sie jedoch zwei aufeinanderfolgende Leerzeichen durch ein einzelnes Leerzeichen ersetzen möchten, sollten Sie Folgendes tun:
quelle
Versuchen Sie dies - Sie müssen
import java.util.regex.*;
Wo
string
ist Ihre Zeichenfolge, an der Sie doppelte Leerzeichen entfernen müssen?quelle
Hallo, der schnellste (aber nicht schönste) Weg, den ich gefunden habe, ist
Dies läuft ziemlich schnell auf Android im Gegensatz zu einem regulären Ausdruck
quelle
quelle
Obwohl es zu spät ist, habe ich eine bessere Lösung gefunden (die für mich funktioniert), die alle aufeinanderfolgenden Leerzeichen des gleichen Typs durch ein Leerzeichen dieses Typs ersetzt. Das ist:
wird sein
Beachten Sie, dass es immer noch führende und nachfolgende Leerzeichen gibt. Meine Komplettlösung lautet also:
Hier
trim()
ersetzt all vorderen und hinteren weißen Raum Strings mit „“.(\\s)
dient zum Erfassen\\s
(dh Leerzeichen wie '', '\ n', '\ t') in Gruppe 1 .+
Das Vorzeichen steht für die Übereinstimmung mit einem oder mehreren vorhergehenden Token. Es(\\s)+
können also aufeinanderfolgende Zeichen (1 oder mehr) unter einzelnen Leerzeichen ('', '\ n' oder '\ t') sein.$1
dient zum Ersetzen der übereinstimmenden Zeichenfolgen durch die Zeichenfolge der Gruppe 1 (die nur 1 Leerzeichen enthält) des übereinstimmenden Typs (dh das einzelne Leerzeichen, das übereinstimmt). Die obige Lösung ändert sich folgendermaßen:wird sein
Ich habe meine obige Lösung hier nicht gefunden und sie daher veröffentlicht.
quelle
Wenn Sie alle führenden und nachfolgenden überflüssigen Leerzeichen entfernen möchten, möchten Sie Folgendes tun:
Anschließend können Sie die Duplikate mit den anderen hier aufgeführten Strategien entfernen:
quelle
Sie können auch versuchen, String Tokeniser für alle Leerzeichen, Tabulatoren, Zeilenumbrüche und alle zu verwenden. Ein einfacher Weg ist,
quelle
Dies kann in drei Schritten möglich sein:
quelle