如何将句子分成由多个空格分隔的单词?

时间:2013-01-22 23:30:34

标签: scala

以下代码:

val sentence = "1 2  3   4".split(" ")

给了我:

Array(1, 2, "", 3, "", "", 4)

但我宁愿只想说:

Array(1, 2, 3, 4)

当单词被多个空格分隔时,如何拆分句子?

3 个答案:

答案 0 :(得分:56)

使用正则表达式:

scala> "1   2 3".split(" +")
res1: Array[String] = Array(1, 2, 3)

“+”表示“前一个或多个”(前一个是空格)。

更好的是,如果你想拆分所有空格:

scala> "1   2 3".split("\\s+")
res2: Array[String] = Array(1, 2, 3)

(其中"\\s"是与任何空格匹配的Pattern。有关更多示例,请查看here。)

答案 1 :(得分:5)

您可以从拆分""中过滤掉Array

scala> val sentence = "1 2  3   4".split(" ").filterNot(_ == "")
sentence: Array[java.lang.String] = Array(1, 2, 3, 4)

答案 2 :(得分:2)

此正则表达式\\W+提供(字母数字)单词,因此

val sentence = "1 2  3   4".split("\\W+")
sentence: Array[String] = Array(1, 2, 3, 4)

为了便于使用,在Scala 2.10。*和2.11。*中考虑

implicit class RichString(val s: String) extends AnyVal {
  def words = s.split("\\W+")
}

因此,

sentence.words
res: Array[String] = Array(1, 2, 3, 4)