有一些字符串如:
"A,C,D" "A,C" "A,B" "B,C" "D,F" "G,D,H"
如果我想通过密钥过滤这些字符串:A,C。这意味着,如果String包含A或C,我会接受它。例如,通过这条规则,我会得到:
"A,C,D" "A,C" "A,B" "B,C"
我该如何编写此功能?
答案 0 :(得分:0)
你应该亲自试试这个,因为这对于Scala的初学者来说是一个很好的学习练习,就像你提到的那样!
所以这里有一个关于如何做到这一点的想法!还有其他一百万种方法,但这只是为了让你开始!
scala> val l = List("A,C,D", "A,C", "A,B", "B,C", "D,F", "G,D,H")
l: List[String] = List(A,C,D, A,C, A,B, B,C, D,F, G,D,H)
scala> l.filter(elem => elem.contains("A") || elem.contains("C"))
res1: List[String] = List(A,C,D, A,C, A,B, B,C)
scala>
答案 1 :(得分:0)
假设您的输入是字符串,如下所示
scala> val input = """"A,C,D" "A,C" "A,B" "B,C" "D,F" "G,D,H""""
input: String = "A,C,D" "A,C" "A,B" "B,C" "D,F" "G,D,H"
您可以按"
拆分,然后过滤掉空字符串。然后过滤包含A
|的那些C
scala> input.split("\"").map(_.trim).filter(_.nonEmpty).filter(e => e.contains("A") || e.contains("C"))
res1: Array[String] = Array(A,C,D, A,C, A,B, B,C)
或者您也可以应用.*A.*|.*C.*
,
scala> input.split("\"").filter(_.nonEmpty).filter(_.matches(".*(A|C).*"))
res2: Array[String] = Array(A,C,D, A,C, A,B, B,C)
另见:
答案 2 :(得分:0)
val samples = List ("A,C,D", "A,C", "A,B", "B,C", "D,F", "G,D,H")
samples.filter (s => s.contains ('A') || s.contains ('C'))
> List(A,C,D, A,C, A,B, B,C)
请注意您是如何提出重要关键字包含和过滤器的(尽管您并不总是那么幸运)。