我不明白当使用regex
(非空白字符)时,String类的split()
方法是如何工作的。我在互联网上发现了一些局部的an but,但我仍然不明白。这里是我的代码:在Java中使用非空白字符时,split方法如何工作?
public class Test {
public static void main(String[] args) {
String myX = "x xx ";
String[] x = myX.split("\\S");
for (String s : x){
System.out.print("\"" + s + "\", ");
}
System.out.println(x.length);
}
}
我的逻辑如下:
是第一'x'
非空白?是的,所以在阵列中我们应该有""
' '
非空白?不,所以在阵列中我们应该有" "
是第二个'x'
非空白?是的,所以在阵列中我们应该有""
第三个'x'
是否为非空白?是的,所以在阵列中我们应该有""
是否最后' '
非空白?没有,所以在阵列中,我们应该有" "
在我看来阵列应该是这样的:["", " ", "", "", " "]
为什么阵列看起来像["", " ", "", " "]
并具有5代替4的长度?在中间位于2倍,不仅出现在阵列中的一个。
谢谢!
生成的元素不是简单的'0x1 x2x3'?为什么'xx'会导致*两个*空字符串? – Biffen
你能更具体吗? –
将匹配到数组中:'[“”,“x”,“”,“x”,“”,“x”,“”]''ie,'“xx”'在左边有一个空格,空字符串在'x's和右边的空格之间。在你的逻辑中,你会说它会产生两个连续的空字符串,但第二个字符串从哪里来呢? – Biffen