Apache StringUtils Função de Divisão faz Louco
-
21-12-2019 - |
Pergunta
Eu estava pensando sobre essa coisa louca na StringUtils.split(string,separator);
Eu quero separar uma string usando um separador @@--@@
e meu código é assim.
String[] strings = StringUtils.split("kayf86@--@9@--@5r43987@!@!%%^&^$%@!@!%-@@*&%$*(&^$%@!@!%--@", "@--@");
for (String string : strings) {
System.out.println(string);
}
Eu encontrei a saída, como tal,
kayf86
9
5r43987
!
!%%^&^$%
!
!%
*&%$*(&^$%
!
!%
Eu uso commons-lang-2.6.jar
Alguém pode explicar que, como essa coisa tinha de acontecer.
Solução
StringUtils
usa qualquer um dos caracteres no separatorChars
argumento como o separador, não necessariamente a coisa toda.O javadoc também os estados
O separador não está incluído na matriz de Seqüência de caracteres retornada. Adjacentes os separadores são tratados como um separador.
Parâmetros
- separatorChars os caracteres usados como delimitadores, null divisões no espaço em branco
Como alternativa, você pode usar StringUtils.splitByWholeSeparator(String, String)
a divisão exata @--@
ou seja o que for.
Outras dicas
Neste cenário é preciso @,- como separador então é por isso que esta saída é produzida.Para a saída exata, você tem que tentar algumas outras "separator"