String.split()无法正常工作

时间:2017-03-28 09:46:31

标签: java regex string split

我正在尝试拆分字符串,但是,我没有得到预期的输出。

String one = "hello 0xA0xAgoodbye";
String two[] = one.split(" |0xA");
System.out.println(Arrays.toString(two));

预期输出:[hello, goodbye]

我得到了什么:[hello, , , goodbye]

为什么会发生这种情况,我该如何解决?

提前致谢! ^ - ^

3 个答案:

答案 0 :(得分:4)

如果您希望将连续分隔符视为一个分隔符,则可以按如下方式修改正则表达式:

"( |0xA)+"

这意味着"空格或字符串"0xA",重复一次或多次"。

答案 1 :(得分:2)

MessageBox.Show这将匹配文本中的一个或多个空格或(\\s|0xA)+并将其拆分

答案 2 :(得分:1)

此结果是由字符串中的多个连续匹配引起的。您可以使用分组构造包装模式,并对其应用+量词以匹配多个匹配项:

String one = "hello 0xA0xAgoodbye";
String two[] = one.split("(?:\\s|0xA)+");
System.out.println(Arrays.toString(two));

(?:\s|0xA)+正则表达式匹配1个或多个空白符号或0XA文字字符序列。

请参阅Java online demo

但是,如果0xA或空格出现在字符串的开头,您仍然会得到一个空值作为结果数组中的第一项。然后,您必须先删除它们:

String two[] = one.replaceFirst("^(?:\\s|0xA)+", "").split("(?:\\s+|0xA)+");

请参阅another Java demo