我正在尝试拆分字符串,但是,我没有得到预期的输出。
String one = "hello 0xA0xAgoodbye";
String two[] = one.split(" |0xA");
System.out.println(Arrays.toString(two));
预期输出:[hello, goodbye]
我得到了什么:[hello, , , goodbye]
为什么会发生这种情况,我该如何解决?
提前致谢! ^ - ^
答案 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)+");