【问题标题】:Filtering a scala string sequence based on a list of strings根据字符串列表过滤scala字符串序列
【发布时间】:2018-02-12 10:11:50
【问题描述】:

我有一个格式为 ("Apple-fruit", "Banana-fruittoo", "Chocolate-notafruit") 的 Scala 序列,我还有另一个格式为 ("Apple", "Banana") 的 Scala 列表

我想根据第二个列表过滤我的第一个序列,以便我的最终输出是("Apple-fruit", "Banana-fruittoo")。谁能帮我解决这个过滤功能?

【问题讨论】:

    标签: string scala filter delimiter collect


    【解决方案1】:
    Seq("Apple-fruit", "Banana-fruittoo", "Chocolate-notafruit")
      .filter(x => Seq("Apple", "Banana").exists(y => x.contains(y)))
    // Seq("Apple-fruit", "Banana-fruittoo")
    

    对于要过滤的seq的每一项(x),我们检查过滤seq的至少一个元素(y)是否存在,例如x包含y。

    【讨论】:

    • 如果字符串大小写完全匹配,这将非常有效。 val filteringSeq = Seq("apple", "banana") 将失败
    • @RobertUdah 我不认为这是问题的要求。在这种情况下,您可以这样做:seqToFilter.filter(x => filteringSeq.exists(y => x.toLowerCase.contains(y.toLowerCase)))
    【解决方案2】:

    试试这个:

    x.filter(x=>y.contains(x.split("-")(0)))
    

    val x = List("Apple-fruit", "Banana-fruittoo", "Chocolate-notafruit")
    val y = List("Apple", "Banana")
    

    在 Scala REPL 中:

    scala> x.filter(x=>y.contains(x.split("-")(0)))
    res130: List[String] = List(Apple-fruit, Banana-fruittoo)
    
    scala>
    

    【讨论】:

      猜你喜欢
      • 2023-03-14
      • 1970-01-01
      • 2011-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 2018-04-29
      • 2015-05-08
      相关资源
      最近更新 更多