【问题标题】:Finding the Value of a Map where the key is a regex查找键为正则表达式的 Map 的值
【发布时间】:2016-05-11 08:09:40
【问题描述】:

我有一个 (Regex -> Int) 的映射,我想获取与输入的字符串匹配的键的值。 为了解释我有一个像这样的地图:

(("BR.*".r -> 100),("HA.*".r -> 90),("GE*".r -> 100))

当我有一个字符串 "BRUSH" 时,如何获得值 100?

这个问题好像和here的问题相反

谢谢!

【问题讨论】:

  • 您必须遍历地图并根据您要查找的字符串检查每个正则表达式键。

标签: regex scala dictionary


【解决方案1】:

您可以通过迭代您的地图并尝试将您的输入与正则表达式键匹配来做到这一点:

val map = Map("BR.*".r -> 100, "HA.*".r -> 90, "GE*".r -> 100)

map.find(_._1.unapplySeq("BRUSH").isDefined).map(_._2)

结果:

map: scala.collection.immutable.Map[scala.util.matching.Regex,Int] = Map(BR.* -> 100, HA.* -> 90, GE* -> 100)

res0: Option[Int] = Some(100)

但请注意,这种方法对于大量键来说效率低下。考虑改用特殊的数据结构,like trie

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 2012-06-09
    • 2018-08-10
    • 1970-01-01
    • 1970-01-01
    • 2017-03-04
    相关资源
    最近更新 更多