Apache StringUtils Split-Funktion macht verrückt
-
21-12-2019 - |
Frage
Ich wunderte mich über diese verrückte Sache in StringUtils.split(string,separator);
Ich möchte eine Zeichenfolge mit einem Trennzeichen trennen @@--@@
und mein Code geht so.
String[] strings = StringUtils.split("kayf86@--@9@--@5r43987@!@!%%^&^$%@!@!%-@@*&%$*(&^$%@!@!%--@", "@--@");
for (String string : strings) {
System.out.println(string);
}
Ich habe die Ausgabe als solche gefunden
kayf86
9
5r43987
!
!%%^&^$%
!
!%
*&%$*(&^$%
!
!%
Ich benutze commons-lang-2.6.jar
Kann jemand erklären, wie das passiert ist.
Lösung
StringUtils
verwendet eines der Zeichen in der separatorChars
argument als Trennzeichen, nicht unbedingt das Ganze.Der javadoc auch Staaten
Das Trennzeichen ist nicht im zurückgegebenen String-Array enthalten. Angrenzend Trennzeichen werden als ein Trennzeichen behandelt.
Rahmenbedingungen
- Trennzeichen die Zeichen, die als Trennzeichen verwendet werden, Null wird auf Leerzeichen aufgeteilt
Alternativ können Sie verwenden StringUtils.splitByWholeSeparator(String, String)
auf die genaue Aufteilung @--@
oder was auch immer es ist.
Andere Tipps
In diesem Szenario werden beide @, - als Trennzeichen verwendet, daher wird diese Ausgabe erzeugt.Für eine genaue Ausgabe müssen Sie ein anderes "Trennzeichen" ausprobieren