This question already has an answer here:
How exactly does String.split() method in Java work when regex is provided?
                                
                                    (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个单空格字符串" ",用于Hellothere之间的空格
there字母之间的空字符串还有4个空字符串
" "there之间还有1个单空格字符串how
how字母之间的空字符串还有2个空字符串
" "how之间还有1个单空格字符串are
are字母之间的空字符串还有2个空字符串
" "how之间还有1个单空格字符串are
you还有3个空字符串,但是String's split method丢弃尾随的空字符串。


将它们全部加在一起,您将获得17个元素。其中大多数是空字符串,但其中4个不是空字符串,并且由单个空格组成。

09-10 06:36
查看更多