String-Manipulation wird am häufigsten während der Programmierung durchgeführt. Wie das Entfernen von Leerzeichen in oder um den String-Text. Dies wird auch als ‚Strip‘ bezeichnet und entfernt Leerzeichen in der Zeichenfolge. Bis jetzt kennen wir alle die verschiedenen Möglichkeiten, Leerzeichen aus Zeichenfolgen in Java zu entfernen, nämlich trim, replaceAll . Java 11 hat jedoch einige neue Ergänzungen mit Methoden wie strip, stripLeading , stripTrailing vorgenommen.
Meistens verwenden wir nur die Trim-Methode zum Entfernen von Leerzeichen. Wir hören nie auf und denken, dass es einen besseren Weg gibt, um unseren Bedürfnissen gerecht zu werden? Sicher, trim() funktioniert in den meisten Fällen gut, aber es gibt viele verschiedene Methoden in Java. Jeder hat seine eigenen Vor- und Nachteile. Wie entscheiden wir, welche Methode am besten zu uns passt?
Nun, in diesem Blog werden wir die verschiedenen Methoden im Detail behandeln.
- trim(): Entfernen führender und nachgestellter Leerzeichen aus der Zeichenfolge
- strip(): Entfernt Leerzeichen am Anfang und Ende der Zeichenfolge. Strip-Methode ist Unicode-Zeichensatz bewusst
- trim vs strip: Unterschiede zwischen Trim- und Strip-Methode
- stripLeading(): Entfernt Leerzeichen nur vom Anfang der Zeichenfolge
- stripTrailing(): Entfernt Leerzeichen nur vom Ende der Zeichenfolge
- replace(): Ersetzt alle Zielzeichen durch neues Zeichen
- replaceAll() : Ersetzt alle übereinstimmenden Zeichen durch neue Zeichen. Diese Methode verwendet reguläre Ausdrücke als Eingabe, um die zu ersetzende Zielzeichenfolge zu identifizieren
- replaceAll vs replace: Unterschiede zwischen replace und replaceAll Methode
- replaceFirst(): Ersetzt nur das erste Auftreten der Zielzeichenfolge durch eine neue Ersatzzeichenfolge
Verschiedene Möglichkeiten, Leerzeichen aus Zeichenfolgen in Java zu entfernen
Der wichtigste zu beachtende Punkt ist, dass in Java ein String-Objekt unveränderlich ist. Dies bedeutet, dass wir eine Zeichenfolge nicht ändern können, daher geben alle Methoden eine neue Zeichenfolge mit allen Transformationen zurück.
trim() -Methode in Java
trim() ist die von Java-Entwicklern am häufigsten verwendete Methode zum Entfernen führender und nachgestellter Leerzeichen. Bei der Trim-Methode bedeutet Leerzeichen jedes Zeichen, dessen ASCII-Wert kleiner oder gleich 32 ist (‚U+0020‘).
Beispiel einer Trim-Methode zum Entfernen von Leerzeichen:
public class StringTrimTest { public static void main(String args) { String string = " String with space "; System.out.println("Before trim: \"" + string +"\""); System.out.println("After trim: \"" + string.trim() +"\""); }}
In CommandLineRunnerImpl
status=running
Before trim: " String with space "After trim: "String with space"
strip() -Methode Java 11
In der Veröffentlichung von Java 11 wurde eine neue strip() -Methode hinzugefügt, um führende und nachfolgende Leerzeichen aus Zeichenfolgen zu entfernen.
Diese Methode wurde hinzugefügt, da es verschiedene Leerzeichen nach Unicode-Standards mit einem ASCII-Wert von mehr als 32 (‚U +0020‘) gibt. Beispiel: 8193 (U+2001).
Um diese Leerzeichen zu identifizieren, wurde die neue Methode isWhitespace(int) von Java 1.5 in der Zeichenklasse hinzugefügt. Diese Methode verwendet Unicode, um Leerzeichen zu identifizieren. Sie können hier mehr über Unicode-Leerzeichen lesen.
Die Strip-Methode verwendet dieses Zeichen.isWhitespace (int) Methode breite Palette von Leerzeichen zu decken und sie zu entfernen.
Beispiel für strip():
public class StringStripTest { public static void main(String args) { String string = " String with space "; System.out.println("Before strip: \"" + string+"\""); System.out.println("After strip: \"" + string.strip()+"\""); }}
In CommandLineRunnerImpl
status=running
Before strip: " String with space "After strip: "String with space"
Unterschied zwischen Trim- und Strip-Methode in Java
trim() | streifen() |
---|---|
Von Java 1 | Von Java 11 |
Verwendet Codepoint(ASCII) -Wert | Verwendet Unicode-Wert |
Entfernt führende und nachfolgende Zeichen(Leerzeichen) | Entfernt führende und nachfolgende Zeichen (Leerzeichen) |
Entfernt Zeichen mit einem ASCII-Wert kleiner oder gleich ‚U+0020′ oder ’32‘ | Entfernt alle Leerzeichen nach Unicode |
Schauen wir uns das Beispiel an, in dem wir Leerzeichen verwenden, die höher als 32 (‚U + 0020‘) Unicode sind.
public class StringTrimVsStripTest { public static void main(String args) { String string = '\u2001'+"String with space"+ '\u2001'; System.out.println("Before: \"" + string+"\""); System.out.println("After trim: \"" + string.trim()+"\""); System.out.println("After strip: \"" + string.strip()+"\""); }}
Ausgabe:
Before: " String with space "After trim: " String with space "After strip: "String with space"
Im obigen Beispiel können wir sehen, dass die trim-Methode das durch das Unicode-Zeichen ‚\ u2001‘ hinzugefügte Leerzeichen nicht entfernen kann.
Hinweis: Wenn Sie auf einem Windows-Computer ausgeführt werden, können Sie die ähnliche Ausgabe aufgrund des begrenzten Unicode-Satzes möglicherweise nicht sehen. Sie können Online-Compiler verwenden, um das Programm auszuführen. Einige Online-Compiler-Links sind wie folgt,
Java-8: https://www.jdoodle.com/online-java-compiler/
Java-11: https://www.tutorialspoint.com/compile_java_online.php
stripLeading() -Methode Java 11
Hinzugefügt in Java 11 entfernt die stripLeading() -Methode alle führenden Leerzeichen aus einer Zeichenfolge.
Ähnlich wie bei der Streifenmethode verwendet stripLeading auch Zeichen.isWhitespace(int) zum Identifizieren von Leerzeichen.
public class StringStripLeadingTest { public static void main(String args) { String string = " String with space "; System.out.println("Before: \"" + string+"\""); System.out.println("After : \"" + string.stripLeading()+"\""); }}
Ausgabe:
Before: " String with space "After : "String with space "
stripTrailing() -Methode Java 11
Hinzugefügt in Java 11 entfernt die stripTrailing() -Methode alle endenden Leerzeichen aus einer Zeichenfolge.
Ähnlich der Strip-Methode verwendet stripTrailing auch Zeichen.isWhitespace(int) zum Identifizieren von Leerzeichen.
public class StringStripTrailingTest { public static void main(String args) { String string = " String with space "; System.out.println("Before: \"" + string+"\""); System.out.println("After : \"" + string.stripTrailing()+"\""); }}
Ausgang:
Before:" String with space "After :" String with space"
replace(CharSequence target, CharSequence replacement):
Diese Methode wurde ab Java 1.5 hinzugefügt und wird verwendet, um jede Ziel-Teilzeichenfolge durch die angegebene Ersetzungszeichenfolge zu ersetzen.
Diese Methode ersetzt alle übereinstimmenden Zielelemente.
Hinweis: Eine weitere Methode replace(char oldChar, char newChar) ist in der Java String-Klasse vorhanden. Der einzige Unterschied besteht darin, dass diese Methode ein einzelnes Zeichen als Ziel und Ersatz verwendet. Wir können diese Methode nicht verwenden, um Leerzeichen zu entfernen, da wir kein leeres Zeichen als Ersatz haben können.
Beispiel zum Entfernen aller Leerzeichen aus der Zeichenfolge
public class StringReplaceTest { public static void main(String args) { String string = " String with space "; System.out.println("Before : \"" + string + "\""); System.out.println("Replace: \"" + string.replace(" ", "") + "\""); }}
Ausgabe:
Before : " String with space "Replace : "Stringwithspace"
replaceAll (String regex, String replacement)
In Java 1.4 hinzugefügt, ist dies eine der leistungsfähigsten Methoden zur String-Manipulation. Wir können diese Methode für viele Zwecke verwenden.
Mit der replaceAll() -Methode können wir jeden passenden regulären Ausdruck durch den angegebenen Ersatzstring ersetzen. Zum Beispiel zum Entfernen aller Leerzeichen, Entfernen führender Leerzeichen, Entfernen nachstehender Leerzeichen und so weiter.
Wir müssen nur den richtigen regulären Ausdruck mit dem richtigen Ersetzungsparameter erstellen. Einige Beispiele für reguläre Ausdrücke wie folgt:
\ s+ | Finden Sie alle Raum |
^\ s+ | Finde alle Leerzeichen am Zeilenanfang |
\ s+$ | Finde alle Leerzeichen am Zeilenende |
Beispiel zum Ersetzen von Leerzeichen in Zeichenfolge,
Hinweis: In Java müssen wir zum Hinzufügen von ‚/‘ Escape-Zeichen verwenden, also müssen wir für „\s+“ „\\s“ verwenden+“
public class StringReplaceAllTest { public static void main(String args) { String string = " String with space "; System.out.println("Before replaceAll : \"" + string+"\""); System.out.println("Replace all space : \"" + string.replaceAll(" ", "") + "\""); System.out.println("Replace all regex : \"" + string.replaceAll("\s+", "") + "\""); System.out.println("Replace Leading : \"" + string.replaceAll("^\s+", "") + "\""); System.out.println("Replace trailing : \"" + string.replaceAll("\s+$", "") + "\""); }}
Ausgang:
Before replaceAll : " String with space "Replace all space : "Stringwithspace"Replace all regex : "Stringwithspace"Replace Leading : "String with space "Replace trailing : " String with space"
Wie wir sehen können, ist replaceAll() eine ziemlich mächtige Methode, wenn wir sie mit dem richtigen regulären Ausdruck verwenden.
Unterschied zwischen replaceAll und replace Methode
replaceAll() | ersetzen() |
---|---|
Von Java 1.4 | Von Java 1.5 |
Akzeptiert regulären Ausdruck für die Zielidentifikation | Akzeptiert String für die Zielidentifikation |
Verwendet für fix oder dynamische string ersatz | Verwendet für fix string ersatz |
Entfernt Zeichen mit einem ASCII-Wert kleiner oder gleich ‚U+0020′ oder ’32‘ | Entfernt alle Leerzeichen gemäß Unicode |
replaceFirst(String regex, String replacement)
In Java 1 hinzugefügt.4, replaceFirst Methode ersetzt nur die erste Übereinstimmung des gegebenen regulären Ausdrucks mit Ersatz-String.
Diese Methode kann sehr nützlich sein, wenn Sie nur ein erstes Vorkommen ersetzen müssen. Wenn wir beispielsweise nur führende Leerzeichen entfernen müssen, können wir „\\s+“ oder „^\\s+“ verwenden.
Wir können diese Methode auch verwenden, um nachgestellte Leerzeichen mit dem regulären Ausdruck „\\s+$“ zu entfernen. Da dieser Ausdruck nur mit den letzten Leerzeichen in der Zeile übereinstimmt. Daher werden die letzten Leerzeichen als erste Übereinstimmung für diese Methode betrachtet.
Nehmen wir ein Beispiel zum Entfernen führender und nachfolgender Leerzeichen aus der Zeichenfolge
public class StringReplaceFistTest { public static void main(String args) { String string = " String with space "; System.out.println("Before : \"" + string+"\""); System.out.println("Replace : \"" + string.replaceFirst("space", "update") + "\""); System.out.println("Leading : \"" + string.replaceFirst("\s+", "") + "\""); System.out.println("Trailing : \"" + string.replaceFirst("\s+$", "") + "\""); }}
Ausgabe
Before : " String with space "Replace : " String with update "Leading : "String with space "Trailing : " String with space"
Fast Track Reading :
- Es gibt verschiedene Möglichkeiten, Leerzeichen aus Zeichenfolgen in Java zu entfernen
- trim() ist die am häufigsten verwendete Methode zum Entfernen von Leerzeichen in Zeichenfolgen
- Die trim-Methode ist nicht Unicode-fähig und verwendet ASCII-Werte, um Leerzeichen zu identifizieren
- Aus Java 11 neue Methode ’strip()‘ zum Entfernen von Leerzeichen hinzugefügt
- unicode-fähig und sollte zum Entfernen von Leerzeichen verwendet werden, insbesondere in diesem Fall
- Aus Java 11 Methoden wie stripLeading() und stripTrailing() werden zum Entfernen führender und nachfolgender Leerzeichen verwendet.
- Zum kontrollierten Entfernen von Leerzeichen können wir replaceAll() , replace() , replaceFirst()