我不明白 String 类中的 split()
方法在使用 regex
(非空白字符)时如何工作。我在互联网上找到了一些部分答案,但我仍然不明白。这是我的代码:
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'
是非空格吗?是的,所以在数组中我们应该有 ""
最后一个 ' '
是非空格吗?不,所以在数组中我们应该有 ""
在我看来,数组应该如下所示:["", "", "", "", ""]
为什么数组看起来像 ["", "", "", ""]
并且长度为 4 而不是 5?中间有 2x,而不是数组中只出现一个。
谢谢!
最佳答案
以下是解释 split()
方法如何应用分隔符的直观方式:
^x xx $
[ "" | " " | "" | " " ]
^ nothing ^ space ^ nothing ^ space ^
start 1st x 2nd x 3rd x end of string
这会产生您观察到的数组输出:
["", " ", "", " "]
关于java - 在 Java 中使用非空白字符时 split 方法如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40785451/