使用带有非空白正则表达式的String split()方法

Luc*_*cas 0 java regex string

我试图弄清楚它是如何工作的,我尝试了几个不同的例子,我只是不理解我得到的结果.fot示例在字符串上使用它,例如:

String s1 = "Hello there how are you";
String [] sa1 = s1.split("\\s");
Run Code Online (Sandbox Code Playgroud)

将返回带有5个明显元素的数组,这对我来说很有意义.这个怎么样:

String s1 = "Hello there how are you";
String [] sa1 = s1.split("\\S");
Run Code Online (Sandbox Code Playgroud)

返回17个空字符串的数组...有人可以帮我理解吗?

rge*_*man 5

正则表达式模式不是\\S指空格,因此每个字母都是一个分隔符.

你得到:

  • 每个字母前面的每个空字符串有5个空字符串 Hello
  • 1单空间串" "用于之间的空间Hellothere
  • 在字母之间的空字符串还有4个空字符串 there
  • 1多个单空间串" "用于之间的空间therehow
  • 在字母之间的空字符串还有2个空字符串 how
  • 1多个单空间串" "用于之间的空间howare
  • 在字母之间的空字符串还有2个空字符串 are
  • 1多个单空间串" "用于之间的空间howare
  • 会有3个更多的空字符串you,但Stringsplit方法丢弃尾部空字符串.

添加它们可以获得17个元素.它们中的大多数是空字符串,但其中4个不是空的并且由单个空格组成.