簡體   English   中英

Scala模式匹配-列表中包含字符串的子集

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM