我是一个相对较新的程序员,通过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;
我的逻辑是,对于list1中的每个单词,然后我尝试将每个badWord元素与当前list1项进行比较,以确定是否应该对其进行过滤。
我已经通过硬编码成功运行了我想要过滤的内容,例如val list2 = list1.filter(_ != "to")
。显然,我想让它具有扩展能力,所以我想学习如何配对滤波器和映射函数(如果这是正确的方法)。
在此先感谢,如果我需要提供更多信息或背景,请与我们联系。
答案 0 :(得分:5)
您可以使用一个非常简单的代码段:
list1.filter(!badWords.contains(_))
这将删除badWords列表中的所有单词。我不确定这是否适用于阵列,所以我建议使用列表。
示例:
val words = List("Hello", "Hello", "World")
val badWords = List("Hello")
val filteredWords = words.filter(!badWords.contains(_))