[英]Scala pattern matching - subset on list containing strings
我想將姓氏在名字中的人的名字作為子集。
以下無效
val names = List("Smith","Adams","Crawford")
val people =List("Billy Jean","Will Morten","Lenhardt Peterson","Lauryn Crawford","George Smith","Priscilla Adams")
people.filter(p=> names.exists(p.name.contains))
天真而不是最有效的解決方案:
val names = Set("Smith","Adams","Crawford")
val people = List("Billy Jean","Will Morten",
"Lenhardt Peterson","Lauryn Crawford",
"George Smith","Priscilla Adams")
people.filter(x => names.contains(x.split(" ").lastOption.getOrElse("")))
.foreach(println)
結果是:
Lauryn Crawford
George Smith
Priscilla Adams
姓氏以各種令人困惑的配置出現。
val names = List("Smith","von Braun","Jones","de Kooning")
val people =List("Billy Jean","Will Morten","Lenhardt Peterson",
"Lauryn Crawford","George Smith","Priscilla Adams",
"Wernher von Braun", "Diederik Arnoldus De Beer", "Willem de Kooning")
names.flatMap(n => people.find(_.matches(s".* $n")))
// res0: List[String] = List(George Smith, Wernher von Braun, Willem de Kooning)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.