La fonction Apache StringUtils Split est folle
-
21-12-2019 - |
Question
Je me demandais à propos de ce truc fou StringUtils.split(string,separator);
Je veux séparer une chaîne à l'aide d'un séparateur @@--@@
et mon code ressemble à ceci.
String[] strings = StringUtils.split("kayf86@--@9@--@5r43987@!@!%%^&^$%@!@!%-@@*&%$*(&^$%@!@!%--@", "@--@");
for (String string : strings) {
System.out.println(string);
}
J'ai trouvé la sortie en tant que telle
kayf86
9
5r43987
!
!%%^&^$%
!
!%
*&%$*(&^$%
!
!%
j'utilise commons-lang-2.6.jar
Quelqu'un peut-il expliquer comment cette chose s'est produite?
La solution
StringUtils
utilise l'un des caractères du separatorChars
l’argument comme séparateur, pas nécessairement le tout.Le javadoc déclare également
Le séparateur n'est pas inclus dans le tableau String renvoyé. Les séparateurs adjacents sont traités comme un seul séparateur.
Paramètres
- séparateurChars les caractères utilisés comme délimiteurs, les divisions nulles sur les espaces
Alternativement, vous pouvez utiliser StringUtils.splitByWholeSeparator(String, String)
diviser sur l'exact @--@
ou quoi que ce soit.
Autres conseils
Dans ce scénario, il faut les deux @,- comme séparateur, c'est pourquoi cette sortie est produite.Pour un résultat exact, vous devez essayer un autre "séparateur"