La funzione Split di Apache StringUtils fa impazzire
-
21-12-2019 - |
Domanda
Mi stavo chiedendo di questa cosa pazza in StringUtils.split(string,separator);
Voglio separare una stringa usando un separatore @@--@@
e il mio codice è così.
String[] strings = StringUtils.split("kayf86@--@9@--@5r43987@!@!%%^&^$%@!@!%-@@*&%$*(&^$%@!@!%--@", "@--@");
for (String string : strings) {
System.out.println(string);
}
.
Ho trovato l'uscita come tale
kayf86
9
5r43987
!
!%%^&^$%
!
!%
*&%$*(&^$%
!
!%
.
Io uso commons-lang-2.6.jar
può qualcuno spiegare che questa cosa fosse accaduta.
Soluzione
StringUtils
utilizza uno qualsiasi dei caratteri nell'argomento separatorChars
come separatore, non necessariamente il tutto. javadoc anche afferma
.Il separatore non è incluso nell'array stringa restituito. adiacente I separatori sono trattati come un separatore.
Parametri
.
- separatorchars I personaggi usati come delimitatori, null split su spazi bianchi
In alternativa, è possibile utilizzare StringUtils.splitByWholeSeparator(String, String)
a dividere sull'esatico @--@
o qualunque cosa sia.
Altri suggerimenti
In questo scenario ci vogliono entrambi @, - come separatore, quindi è il motivo per cui questa uscita è prodotta. Per l'uscita esatta devi provare un altro altro "separatore"