0

考虑如下带有 delimiter 的字符串__|__

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()?

4

2 回答 2

5

String.split()有一些非常令人惊讶的语义,它很少是你想要的。您应该更喜欢StringUtils(或 Guava's Splitter,在上一个链接中讨论过)。

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

StringUtils.splitByWholeSeparator(str, "__|__");
于 2017-06-06T23:10:33.607 回答
1

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

于 2017-06-06T23:07:38.187 回答