使用分隔符拆分字符串,如果一个分隔符跟在另一个分隔符号后面,则检索空白



如果这是重复的,我很抱歉,但我找不到任何相关的问题。(也许我就是找不到适合这类问题的搜索表达式)

想一想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("[:+]")

输出:

  1. 试验
  2. 测试2
  3. 测试3
  4. "
  5. 测试4
  6. 测试5
  7. 测试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

最新更新