使用另一个单词从一个列表中过滤单词

时间:2017-02-16 19:07:16

标签: scala filter functional-programming

我是一个相对较新的程序员,通过udemy课程学习scala和函数式编程。

我正在寻找根据另一个字符串列表过滤字符串列表。我想减少第一个列表,这样当我打印出来时,它只包含单词 - " rob","学习"," scala"

这是我正在使用的代码:



val list1:Array[String] = Array("rob","you", "to","learns", "your", "the","scala", "a")

val badWords:Array[String] = Array("you", "to", "your", "the", "a")

val list2 = list1.map(x => badWords.map(badWord => list1.filter(word => word != badWord)))

for (word <- list2) {
  println(word)
}
&#13;
&#13;
&#13;

我的逻辑是,对于list1中的每个单词,然后我尝试将每个badWord元素与当前list1项进行比较,以确定是否应该对其进行过滤。

我已经通过硬编码成功运行了我想要过滤的内容,例如val list2 = list1.filter(_ != "to")。显然,我想让它具有扩展能力,所以我想学习如何配对滤波器和映射函数(如果这是正确的方法)。

在此先感谢,如果我需要提供更多信息或背景,请与我们联系。

1 个答案:

答案 0 :(得分:5)

您可以使用一个非常简单的代码段:

list1.filter(!badWords.contains(_))

这将删除badWords列表中的所有单词。我不确定这是否适用于阵列,所以我建议使用列表。

示例:

val words = List("Hello", "Hello", "World")
val badWords = List("Hello")
val filteredWords = words.filter(!badWords.contains(_))