Как разбить предложение на слова, разделенные несколькими пробелами? Следующий код: 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)
Ответ 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)