这是我在play框架中第一次尝试使用scala。我真正想要实现的是从段落中的句子中取出每个第一个单词。
这是抛出错误的代码
文字是可变的.Seq [String]
someText.flatMap(_ split "[.?!]")
.map(_ split "\\s+" filter !_.equals("") head)
.toList
但问题出在第二行。它抛出错误说:
[NoSuchElementException:next on empty iterator]
以我的拙见,只要 someText 是一个包含大量句子的真实段落,用空格分隔的句子就不会是空的。
有人可以澄清,这是怎么发生的以及如何解决它?
答案 0 :(得分:1)
Asd
的字符。如果您想以点字符形式对待它,则需要像.
一样将其转义。\\.
是someText
吗?我不明白为什么你Option[String]
。flatMap
时,您会收到异常,请注意这一点。 head
答案 1 :(得分:-1)
您使用.head
操作,这是不安全的(如果集合为空则例外)。
您最好使用.headOption
:
someText.flatMap(_ split "[.?!]")
.flatMap(_ split "\\s+" filter !_.equals("") headOption toList)
.toList