如果这是重复的,我很抱歉,但我找不到任何相关的问题。(也许我就是找不到适合这类问题的搜索表达式)
想一想Java中的以下字符串:
"test:test2+test3++test4:test5+test6"
正如您所看到的,分隔符是:
和+
。
使用Apache StringUtils.split(string, "[:+]")
方法可以很好地进行拆分,但问题是,如果出现++
,则返回的StringArray
不包含空白,以指示存在未使用的值。
这意味着我需要以下输出:
"test"
"test2"
"test3"
" " <-- whitespace!
"test4"
"test5"
"test6"
++
也可以出现在字符串的开头或末尾。有没有办法用正则表达式来解决这个问题?
这应该适用于您:
String string = "test:test2+test3++test4:test5+test6";
string.replaceAll("([:+]){2,}", "$1 $1").split("[:+]")
输出:
- 试验
- 测试2
- 测试3
- "
- 测试4
- 测试5
- 测试6
请参阅带空格的标记#4(我添加了引号进行演示)。
这就是您需要的吗?
String s = "test:test2+test3++test4:test5++test6";
String[] s1 = s.replaceAll ("[:+]{1}", " ").split (" ");
for(int i = 0;i<s1.length;i++){
System.out.println (s1[i]);
}
输出:
test
test2
test3
test4
test5
test6