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

时间:2014-08-25 18:24:33

标签: java regex string

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

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个空字符串的数组...有人可以帮我理解吗?

1 个答案:

答案 0 :(得分:5)

正则表达式模式\\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个不是空的并且由单个空格组成。