Как разбить предложение на слова, разделенные несколькими пробелами?
Следующий код:
val sentence = "1 2 3 4".split(" ")
дает мне:
Array(1, 2, "", 3, "", "", 4)
но я предпочел бы иметь только слова:
Array(1, 2, 3, 4)
Как я могу разделить предложение, когда слова разделены несколькими пробелами?
Ответы
Ответ 1
Используйте регулярное выражение:
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, который соответствует любому пробелу. Посмотрите здесь для получения более подробной информации. примеры.)
Ответ 2
Вы можете отфильтровать ""
из раскола Array
.
scala> val sentence = "1 2 3 4".split(" ").filterNot(_ == "")
sentence: Array[java.lang.String] = Array(1, 2, 3, 4)
Ответ 3
Это регулярное выражение \\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)