Java中的String.split vs StringUtils.split给出了不同的结果

时间:2017-06-06 22:58:45

标签: java string split apache-stringutils

考虑下面的字符串,使用分隔符__|__

String str = "a_b__|__c_d";

str.split("__\\|__")给出了2个分割a_b和c_d StringUtils.split(str, "__|__") or StringUtils.split(str, "__\\|__")给出了4个分裂a,b,c,d,这是不可取的。

有没有办法让StringUtils.split()给出相同的结果String.split()?

2 个答案:

答案 0 :(得分:4)

String.split()有一些very surprising语义,很少你想要它。您应该更喜欢StringUtils(或上一个链接中讨论过的番石榴Splitter)。

您的具体问题是String.split()采用正则表达式,而StringUtils.split()使用每个字符作为单独的标记。您应该使用StringUtils.splitByWholeSeparator()来分割完整字符串的内容。

StringUtils.splitByWholeSeparator(str, "__|__");

答案 1 :(得分:1)

不,根据文档,StringUtils.split的第二个参数是被视为分割符的所有字符的列表。 Apache Commons中有一个不同的功能可以满足您的需求 - StringUtils.splitByWholeSeparator。不过,我对简单的String.split没有错。