下面的代码:
val sentence = "1 2 3 4".split(" ")
给我:
Array(1, 2, "", 3, "", "", 4)
但我宁愿希望有只有一行字:
Array(1, 2, 3, 4)
我怎么可以拆分句子时的文字,被多个空格隔开?
下面的代码:
val sentence = "1 2 3 4".split(" ")
给我:
Array(1, 2, "", 3, "", "", 4)
但我宁愿希望有只有一行字:
Array(1, 2, 3, 4)
我怎么可以拆分句子时的文字,被多个空格隔开?
使用正则表达式:
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"
是一个模式相匹配任何空白。看看这里有更多的例子。)
您可以过滤掉""
从分割Array
。
scala> val sentence = "1 2 3 4".split(" ").filterNot(_ == "")
sentence: Array[java.lang.String] = Array(1, 2, 3, 4)
该正则表达式\\W+
递送(alphaunmerical)词语,从而
val sentence = "1 2 3 4".split("\\W+")
sentence: Array[String] = Array(1, 2, 3, 4)
为了方便使用,在斯卡拉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)