查找键是正则表达式的地图的值

时间:2016-05-10 22:59:12

标签: regex scala dictionary

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

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

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

这个问题似乎与问题here

相反

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以通过迭代地图并尝试将输入与正则表达式键匹配来实现:

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

res0: Option[Int] = Some(100)

结果:

val pop = sc.textFile("population.csv")
.filter(line => !line.startsWith("Country"))
.map(line => line.split(","))
.map { case Array(CountryName, CountryCode, Year, Value) => (CountryName, CountryCode, Year, Value) }

但请注意,这种方法对于大量密钥来说效率很低。请考虑使用特殊数据结构like trie