考虑如下带有 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()?
考虑如下带有 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()?
String.split()
有一些非常令人惊讶的语义,它很少是你想要的。您应该更喜欢StringUtils
(或 Guava's Splitter
,在上一个链接中讨论过)。
您的具体问题是String.split()
采用正则表达式,同时StringUtils.split()
使用每个字符作为单独的标记。您应该使用StringUtils.splitByWholeSeparator()
拆分完整字符串的内容。
StringUtils.splitByWholeSeparator(str, "__|__");
不,根据文档, StringUtils.split 的第二个参数是被视为拆分器的所有字符的列表。Apache Commons 中有一个不同的功能可以满足您的需求 - StringUtils.splitByWholeSeparator。不过,我不明白简单的 String.split 有什么问题。