This question already has an answer here:
How exactly does String.split() method in Java work when regex is provided?
(1个答案)
5年前关闭。
我试图弄清楚它是如何工作的,我尝试了几个不同的例子,但我只是不理解我得到的结果。在字符串上使用它的示例,例如:
将返回包含5个显而易见的元素的数组,这对我来说很有意义。这个怎么样:
返回由17个空字符串组成的数组...有人可以帮助我理解它吗?
(1个答案)
5年前关闭。
我试图弄清楚它是如何工作的,我尝试了几个不同的例子,但我只是不理解我得到的结果。在字符串上使用它的示例,例如:
String s1 = "Hello there how are you";
String [] sa1 = s1.split("\\s");
将返回包含5个显而易见的元素的数组,这对我来说很有意义。这个怎么样:
String s1 = "Hello there how are you";
String [] sa1 = s1.split("\\S");
返回由17个空字符串组成的数组...有人可以帮助我理解它吗?
最佳答案
正则表达式模式\\S
表示不是空格,因此每个字母都是一个分隔符。
你得到:Hello
的每个字母前的每个空字符串有5个空字符串
1个单空格字符串" "
,用于Hello
和there
之间的空格there
字母之间的空字符串还有4个空字符串" "
和there
之间还有1个单空格字符串how
how
字母之间的空字符串还有2个空字符串" "
和how
之间还有1个单空格字符串are
are
字母之间的空字符串还有2个空字符串" "
和how
之间还有1个单空格字符串are
you
还有3个空字符串,但是String
's split
method丢弃尾随的空字符串。
将它们全部加在一起,您将获得17个元素。其中大多数是空字符串,但其中4个不是空字符串,并且由单个空格组成。