Ich habe eine Zeichenfolge wie diese:
mysz = "name=john age=13 year=2001";
Ich möchte die Leerzeichen in der Zeichenfolge entfernen. Ich habe es versucht, trim()
aber dadurch werden nur Leerzeichen vor und nach der gesamten Zeichenfolge entfernt. Ich habe es auch versucht, replaceAll("\\W", "")
aber dann wird das =
auch entfernt.
Wie kann ich eine Zeichenfolge erreichen mit:
mysz2 = "name=johnage=13year=2001"
java
whitespace
Zyamat
quelle
quelle
\\W
bedeutet alle Nicht-Wörter siehe download.oracle.com/javase/6/docs/api/java/util/regex/…Antworten:
st.replaceAll("\\s+","")
Entfernt alle Leerzeichen und nicht sichtbaren Zeichen (z. B. Tabulator\n
).st.replaceAll("\\s+","")
undst.replaceAll("\\s","")
produzieren das gleiche Ergebnis.Die zweite Regex ist 20% schneller als die erste, aber mit zunehmender Anzahl aufeinanderfolgender Leerzeichen ist die Leistung des ersten besser als die des zweiten.
Weisen Sie den Wert einer Variablen zu, wenn er nicht direkt verwendet wird:
quelle
\w
= Alles, was ein Wortzeichen ist\W
= Alles, was kein Wortzeichen ist (einschließlich Interpunktion usw.)\s
= Alles, was ein Leerzeichen ist (einschließlich Leerzeichen, Tabulatorzeichen usw.)\S
= Alles, was kein Leerzeichen ist (einschließlich Buchstaben und Zahlen sowie Interpunktion usw.)(Bearbeiten: Wie bereits erwähnt, müssen Sie dem Backslash entkommen, wenn Sie
\s
die Regex-Engine erreichen möchten\\s
.)quelle
Die richtigste Antwort auf die Frage lautet:
Ich habe gerade diesen Code aus den anderen Antworten angepasst. Ich poste es, weil es nicht genau das ist, was die Frage angefordert hat, sondern auch zeigt, dass das Ergebnis als neue Zeichenfolge zurückgegeben wird. Die ursprüngliche Zeichenfolge wird nicht geändert, da einige der Antworten dies implizieren.
(Erfahrene Java-Entwickler könnten sagen: "Natürlich können Sie einen String nicht ändern", aber die Zielgruppe für diese Frage weiß dies möglicherweise nicht.)
quelle
S
, überschreibt aber nicht die Zeichenfolge, auf dieS
zeigt.Wie wäre es mit
replaceAll("\\s", "")
. Siehe hier .quelle
Eine Möglichkeit, mit String-Manipulationen umzugehen, sind StringUtils von Apache Commons.
Sie finden es hier . commons-lang enthält viel mehr und wird gut unterstützt.
quelle
Wenn Sie auch unzerbrechliche Leerzeichen entfernen müssen, können Sie Ihren Code folgendermaßen aktualisieren:
quelle
" ab c "
Wenn Sie Dienstprogrammklassen regulären Ausdrücken vorziehen, gibt es in StringUtils im Spring Framework eine Methode trimAllWhitespace (String) .
quelle
Sie haben bereits die richtige Antwort von Gursel Koca erhalten, aber ich glaube, dass es eine gute Chance gibt, dass dies nicht das ist, was Sie wirklich tun möchten. Wie wäre es stattdessen mit dem Parsen der Schlüsselwerte?
quelle
Du solltest benutzen
anstatt:
Auf diese Weise funktioniert es mit mehr als einem Leerzeichen zwischen den einzelnen Zeichenfolgen. Das + -Zeichen im obigen regulären Ausdruck bedeutet "ein oder mehrere \ s".
quelle
replaceAll
wiederholt wird, bis das Muster mit keinem Teil der Zeichenfolge übereinstimmt.+
kann es geringfügig mehr CPU - freundlich, weil aufeinander folgende Leerzeichen in einem Betrieb einzelnen gehandhabt werden ersetzen, aber das ist der einzige Unterschied in diesem Fall. Es ist in der Tat dasAll
, nicht das+
, das nicht aufeinanderfolgende Leerzeichen in der Zeichenfolge ersetzt.Der einfachste Weg , dies zu tun ist durch die Verwendung der
org.apache.commons.lang3.StringUtils
Klasse dercommons-lang3
Bibliothek wie "commons-lang3-3.1.jar
“ zum Beispiel.Verwenden Sie die statische Methode "
StringUtils.deleteWhitespace(String str)
" für Ihre Eingabezeichenfolge. Nach dem Entfernen aller Leerzeichen wird eine Zeichenfolge zurückgegeben. Ich habe Ihre Beispielzeichenfolge "name=john age=13 year=2001
" ausprobiert und sie hat mir genau die Zeichenfolge zurückgegeben, die Sie wollten - "name=johnage=13year=2001
". Hoffe das hilft.quelle
Sie können es so einfach machen, indem Sie
quelle
quelle
// es funktioniert gut mit Leerzeichen * Leerzeichen in sting nicht vergessen b
quelle
\W
bedeutet "Nicht-Wort-Zeichen". Das Muster für Leerzeichen ist\s
. Dies ist im Pattern Javadoc gut dokumentiert .quelle
In Java können wir folgende Operation ausführen:
Dazu müssen Sie folgende Pakete in Ihr Programm importieren:
ich hoffe es hilft dir.
quelle
Mit Pattern And Matcher ist es dynamischer.
quelle
Verwenden
mysz.replaceAll("\\s+","");
quelle
Verwenden Sie die Utache-Klasse für Apache-Zeichenfolgen, um eine NullPointerException zu vermeiden
Ausgabe
quelle
Stellen Sie bei der Verwendung
st.replaceAll("\\s+","")
in Kotlin sicher, dass Sie Regex verwenden :"\\s+"
quelle
Erstens mit Raum, zweitens ohne Raum.
Dann ist es geschafft.
quelle
[ \t\n\x0B\f\r]
. Sie machen nur normale[ ]
Räume.quelle
Es gibt viele Möglichkeiten, dieses Problem zu lösen. Sie können die Split-Funktion verwenden oder die Funktion von Strings ersetzen.
Weitere Informationen finden Sie unter http://techno-terminal.blogspot.in/2015/10/how-to-remove-spaces-from-given-string.html
quelle
Um Leerzeichen in Ihrem Beispiel zu entfernen, gehen Sie folgendermaßen vor:
Dies konvertiert es in ein Array, wobei die Leerzeichen die Trennzeichen sind, und kombiniert dann die Elemente im Array ohne Leerzeichen.
Es funktioniert ziemlich gut und ist leicht zu verstehen.
quelle
Es gibt auch andere Leerzeichen in Zeichenfolgen. Daher müssen wir möglicherweise Leerzeichen aus Zeichenfolgen ersetzen.
Beispiel: NO-BREAK-RAUM, DREI-PRO-EM-RAUM, PUNKTIONSRAUM
Hier ist die Liste der Leerzeichen http://jkorpela.fi/chars/spaces.html
Also müssen wir ändern
\ u2004 uns für DREI-PER-EM-RAUM
s.replaceAll ("[\ u0020 \ u2004]", "")
quelle
Leerzeichen können mithilfe der Funktion isWhitespace aus der Zeichenklasse entfernt werden.
quelle
Trennen Sie jede Textgruppe in einen eigenen Teilstring und verketten Sie diese Teilstrings:
quelle
Dies könnte helfen.
quelle
Sie können sich auch den folgenden Java-Code ansehen. Die folgenden Codes verwenden keine "integrierten" Methoden.
Eingang:
Ausgabe:
quelle
quelle
Es werden sehr viele Antworten gegeben. Ich möchte eine Lösung geben, die gut lesbar und besser als Regex ist.
quelle