La función dividida de Apache StringUtils es una locura
-
21-12-2019 - |
Pregunta
Me preguntaba acerca de esta locura en StringUtils.split(string,separator);
Quiero separar una cadena usando un separador. @@--@@
y mi código es el siguiente.
String[] strings = StringUtils.split("kayf86@--@9@--@5r43987@!@!%%^&^$%@!@!%-@@*&%$*(&^$%@!@!%--@", "@--@");
for (String string : strings) {
System.out.println(string);
}
Encontré el resultado como tal.
kayf86
9
5r43987
!
!%%^&^$%
!
!%
*&%$*(&^$%
!
!%
yo suelo commons-lang-2.6.jar
¿Alguien puede explicar cómo sucedió esto?
Solución
StringUtils
utiliza cualquiera de los personajes del separatorChars
argumento como separador, no necesariamente el todo.El javadoc también estados
El separador no está incluido en la matriz String devuelta. Los separadores adyacentes son tratados como un separador.
Parámetros
- separadorCaracteres los caracteres utilizados como delimitadores, divisiones nulas en espacios en blanco
Alternativamente, puedes usar StringUtils.splitByWholeSeparator(String, String)
dividirse en el exacto @--@
o lo que sea.
Otros consejos
En este escenario, toma ambos @, como separador, por lo que es por eso que se produce esta salida. Para la salida exacta, debe probar algún otro "separador"