[JAVA] Unterschiede in den Split-Methoden von StringUtils

Überblick

Es gibt Variationen der Split-Methode "StringUtils" von Commons Lang von Apache Commons. Es gibt viele, aber einige davon sind schwer zu verstehen und Erklärungen und Beispiele für API-Dokumentation Selbst wenn ich es gelesen oder die Informationen im Internet durchsucht habe, konnte ich es nicht gut verstehen, also habe ich den Unterschied überprüft.

Version verwendet

Neueste 3.7 im Moment

Variation

1. split () System

1-1. split(String str) Teilen Sie die Zeichenfolge str mit Leerzeichen (Tabulatoren, Zeilenumbrüche, Leerzeichen). Leerzeichen in voller Breite werden auch als Leerzeichen erkannt.

1-2. split(String str, char separatorChar) Teilen Sie die Zeichenfolge "str" mit dem Trennzeichen "separatorChar". Es unterscheidet sich von 1-1 darin, dass das Trennzeichen explizit angegeben wird.

1-3. split(String str, String separatorChars) Teilen Sie die Zeichenfolge "str" durch die Trennzeichengruppe "separatorChars". Es unterscheidet sich von 1-2. Darin können ** mehrere Trennzeichen angegeben werden **. Auf den ersten Blick scheint es, dass ein Zeichenfolgen-Trennzeichen verwendet werden kann, aber es ist schwer zu verstehen, dass ** Trennzeichen ein Zeichen sind ** und mehrere Typen angegeben werden können. Da es sich bei dem Typ um eine Zeichenfolge handelt, kann es leicht zu Missverständnissen kommen. Da das benachbarte Trennzeichen als ein Trennzeichen behandelt wird, sieht es häufig so aus, als könnte es durch eine Zeichenfolge getrennt werden, und manchmal funktioniert es nicht. Sei vorsichtig, wenn du süchtig danach bist. Zum Beispiel

python


StringUtils.split("xxxxxandyyyyyandzzzzz", "and");

Im Falle von,

python


{"xxxxx", "yyyyy", "zzzzz"}

Wird zurückgegeben, also denke ich: "Oh! Du kannst dich mit" und "richtig trennen. In Ordnung!"

python


StringUtils.split("xxaxxandyynyyandzzdzz", "and");

Im Falle von,

python


{"xxaxx", "yynyy", "zzdzz"}

Ich denke, das wird zurückgegeben, aber in Wirklichkeit ist das Ergebnis

python


{"xx", "xx", "yy", "yy", "zz", "zz"}

Dann "Huh !?" Wenn Sie eine Zeichenfolge als Trennzeichen verwenden möchten, verwenden Sie "splitByWholeSeparator ()", das später beschrieben wird.

1-4. split(String str, String separatorChars, int max) Zusätzlich zu 1-3. Können Sie die maximale Anzahl von Unterteilungen mit max angeben. Selbst wenn die Anzahl der Begrenzer größer als "max" ist, kann sie nicht auf mehr als "max" begrenzt werden. Wenn Sie beispielsweise 2 für "max" angeben, beträgt die maximale Anzahl von Elementen im zurückgegebenen Array 2, unabhängig davon, wie viele getrennt sind. Wenn für "max" 0 oder minus angegeben ist, wird dies als unendliche Zahl behandelt.

2. splitByWholeSeparator () System

2-1. splitByWholeSeparator(String str, String separator) Teilen Sie die Zeichenfolge "str" durch die Trennzeichenfolge "separator". Dies ist die Methode, die verwendet werden soll, wenn Sie mit einer Zeichenfolge trennen möchten. Wenn dies der Fall ist

python


StringUtils.splitByWholeSeparator("xxaxxandyynyyandzzdzz", "and");

Im Falle von

python


{"xxaxx", "yynyy", "zzdzz"}

Wird zurückgegeben.

2-2. splitByWholeSeparator(String str, String separator, int max) Zusätzlich zu 2-1. Eine Version, in der die maximale Anzahl von Unterteilungen "max" angegeben werden kann.

3. splitPreserveAllTokens () System

3-1. splitPreserveAllTokens(String str) Bei den bisher aufgetretenen Methoden werden benachbarte Trennzeichen als ein Trennzeichen betrachtet. Bei diesem System wird jedoch ein leeres Token zurückgegeben, wenn die Trennzeichen benachbart sind. Mit anderen Worten

python


StringUtils.split("a  b");

Im Falle von,

python


{"a", "b"}

Ist zurück gekommen,

python


StringUtils.splitPreserveAllTokens("a  b");

Im Falle von,

python


{"a", "", "b"}

Ist zurück gekommen. Es kann bei der Verarbeitung von durch Kommas und Tabulatoren getrennten Daten verwendet werden.

3-2. splitPreserveAllTokens(String str, char separatorChar) Alle Tokens-Version von 1-2 beibehalten.

3-3. splitPreserveAllTokens(String str, String separatorChars) Alle Tokens-Version von 1-3 beibehalten.

3-4. splitPreserveAllTokens(String str, String separatorChars, int max) Alle Tokens-Version von 1-4 beibehalten.

4. splitByWholeSeparatorPreserveAllTokens () System

4-1. splitByWholeSeparatorPreserveAllTokens(String str, String separator) Methodenname ist lang! Kurz gesagt, es handelt sich um eine Kombination aus 2 und 3 Systemen. Wenn eine Zeichenfolge für das Trennzeichen verwendet werden kann und die Trennzeichen benachbart sind, wird ein leeres Token zurückgegeben.

4-2. splitByWholeSeparatorPreserveAllTokens(String str, String separator, int max) Die "max" angegebene Version davon. Die Überschrift wird immer länger. Jugem Jugem ...

5. splitByCharacterType () System

5-1. splitByCharacterType(String str) Eine Aufteilungsmethode mit einer etwas anderen Haarfarbe, die den Zeichentyp bestimmt und aufeinanderfolgende Zeichen desselben Typs in einen Token unterteilt. Die Beurteilung des Zeichentyps lautet [getType ()](https://docs.oracle.com/javase/jp/10/docs/api/java/lang/Character.html#getType (int) von java.lang.Character )). Die Liste der verwandten Elemente im API-Dokument dieser getType () -Methode beschreibt die Kategorisierung, aber es gibt so viele Typen!

Beispiel


StringUtils.splitByCharacterType("ABCabc 123");

Ausführungsergebnis


{"ABC", "abc", " ", "123", "Ah"}

5-2. splitByCharacterTypeCamelCase(String str) Die Teilungsregel ist fast dieselbe wie bei 5-1. Wenn jedoch die oberen und unteren Buchstaben nach den oberen und unteren Buchstaben stehen, gehören die oberen und unteren Buchstaben zum Token in den unteren und unteren Buchstaben. Zum Aufteilen von Kamelkisten?

Beispiel


StringUtils.splitByCharacterTypeCamelCase("ABCabc 123");

Ausführungsergebnis


{"AB", "Cabc", " ", "123", "Ah"}

Recommended Posts

Unterschiede in den Split-Methoden von StringUtils
Liste der im PAIZA D-Rang verwendeten Methoden
Teilen Sie route.rb in Rails6
Ausgabe in Vielfachen von 3
Denken Sie über die Unterschiede zwischen Funktionen und Methoden nach (in Java)
Informationen zu Validierungsmethoden in JUnit
Hilfsmethoden im Gerät verfügbar
Testen Sie private Methoden in JUnit
Testen Sie private Methoden in JUnit
Zusammenfassung der "abstrakten Schnittstellenunterschiede"
Java-Implementierung von Tri-Tree
Die Fallstricke von JAX-RS WebTarget.queryParam ()
Verspotten Sie statische Methoden in Mockito 3.4
Implementierung von HashMap mit Kotlin
Verketten Sie Zeichenfolgen, die von Mehrobjektmethoden in Java Stream zurückgegeben werden