【问题标题】:using String split() method with non-white space regex [duplicate]使用带有非空白正则表达式的 String split() 方法 [重复]
【发布时间】:2014-08-25 18:24:32
【问题描述】:

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

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+ 来查找由空格分隔的任何内容。 DEMO 根据示例返回 5 个单词。
  • 是的,我理解量词谢谢,但我的问题略有不同。

标签: java regex string


【解决方案1】:

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

你得到:

  • Hello 的每个字母前的每个空字符串对应 5 个空字符串
  • 1 个单空格字符串 " " 用于 Hellothere 之间的空格
  • there 的字母之间的空字符串还有 4 个空字符串
  • 另外 1 个单空格字符串 " " 用于 therehow 之间的空格
  • how 的字母之间的空字符串还有 2 个空字符串
  • 另外1个单空格字符串" "用于howare之间的空格
  • are 的字母之间的空字符串还有 2 个空字符串
  • 另外 1 个单空格字符串 " " 用于 howare 之间的空格
  • you 会多出 3 个空字符串,但 String's split method 会丢弃尾随的空字符串。

将它们全部加起来,您就得到了 17 个元素。其中大部分是空字符串,但其中有 4 个不是空的,由一个空格组成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    • 2013-03-26
    • 1970-01-01
    • 2018-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多