2016-04-15 42 views
2

有沒有辦法用一個表達式過濾含有單詞「字詞1」或其他的「單詞2」 類似的線路:過濾器由兩個詞線星火流

val res = lines.filter(line => line.contains("word1" or "word2")) 

,因爲這種表達沒有按」工作。

預先感謝您

回答

4

如果行是一個String最佳的選擇將正則表達式:

val pattern = "word1|word2".r 

lines.filter(line => pattern.findFirstIn(line).isDefined) 

否則(其它序列類型),可以使用Seq.exists

lines.filter(line => Seq("foo", "bar").exists(s => line.contains(s))) 

,這需要從元素映射到布爾值(這裏是(String) ⇒ Boolean)和:

測試謂詞是否適用於此可迭代集合中的至少一個元素。