次のコード:
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)
「+」は「前の1つ以上」(前はスペース)を意味します。
さらに良いことに、すべての空白で分割したい場合:
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+
は(英数字の)単語を提供します。
val sentence = "1 2 3 4".split("\\W+")
sentence: Array[String] = Array(1, 2, 3, 4)
使いやすさのために、Scala2.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)