下面是2个代码
System.out.println(",,,,,".split(",").length);
and
System.out.println(",,,,, ".split(",").length);
对于第一个代码,它打印的结果是0对于第二个代码,它打印的结果是 6。
我的问题是为什么分裂无法识别","当我没有在末尾添加额外的空间但当我在末尾添加额外的空间时它能够识别它。
请注意我已经尝试过使用正则表达式“\\s*,\\s”但结果是一样的。
我没有这方面的文档参考,但根据我在测试中看到的经验String#split
的问题是,如果没有实际的文本匹配,则数组中也不会返回零宽度匹配。因此以下返回一个空数组:
",,,,,".split(",")
但是,如果您在一系列逗号的末尾添加一个空格,然后执行相同的拆分,则将有一个匹配的空格。因此,数组返回所有匹配项,包括零宽度匹配项:
",,,,, ".split(",")
但是,因为逗号之间没有内容,所以我将您的真正要求解释为想要将每个单独的逗号分割成一个单独的结果。如果是这样,那么您可以使用环视进行拆分,如下所示:
String input = ",,,,,";
String[] parts = input.split("(?<=,)(?=,)");
for (String part : parts) {
System.out.println(part);
}
这输出:
,
,
,
,
,
Demo http://rextester.com/JAXJM36042
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)