考虑下面的字符串,使用分隔符__|__
。
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()?
答案 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没有错。