Подтвердить что ты не робот

Как разбить предложение на слова, разделенные несколькими пробелами?

Следующий код:

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

дает мне:

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

но я предпочел бы иметь только слова:

Array(1, 2, 3, 4)

Как я могу разделить предложение, когда слова разделены несколькими пробелами?

4b9b3361

Ответ 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)