以下代码:
val sentence = "1 2 3 4".split(" ")
给了我:
Array(1, 2, "", 3, "", "", 4)
但我宁愿只想说:
Array(1, 2, 3, 4)
当单词被多个空格分隔时,如何拆分句子?
答案 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)
答案 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)