Apache StringUtils分裂函数可以实现疯狂

ash*_*cse 2 java apache string split apache-stringutils

我想知道这个疯狂的事情 StringUtils.split(string,separator);

我想用分隔符分隔一个字符串@@--@@,我的代码是这样的.

String[] strings = StringUtils.split("kayf86@--@9@--@5r43987@!@!%%^&^$%@!@!%-@@*&%$*(&^$%@!@!%--@", "@--@");
for (String string : strings) {
    System.out.println(string);
}
Run Code Online (Sandbox Code Playgroud)

我发现了输出

kayf86
9
5r43987
!
!%%^&^$%
!
!%
*&%$*(&^$%
!
!%
Run Code Online (Sandbox Code Playgroud)

我用commons-lang-2.6.jarCan可以解释一下这件事是怎么发生的.

Sot*_*lis 6

StringUtils使用separatorChars参数中的任何字符作为分隔符,不一定是整个事物.该javadoc中还规定

分隔符不包含在返回的String数组中.相邻的分离器被视为一个分离器.

参数

  • separatorChars 用作分隔的字符,空白处的null分割

或者,您可以使用它StringUtils.splitByWholeSeparator(String, String)来分割确切的@--@或者它是什么.