有没有办法在字典对象中只找到部分键值?

时间:2012-04-05 15:40:31

标签: vb.net data-dictionary

有一个字典对象加载了以下键值: 119 189A 189B 189C 197 201A 201B

在大多数情况下,生活是美好的,所有个人关键值都是必需/独特的。但在某些情况下,背后带有字母的键(即...... 189a,189b,189c)都意味着相同的东西(即...... 189)。所以我需要一种方法来查看键值的第一部分是否存在键值(如containskey方法),然后返回true。 有关如何实现这一目标的任何想法?

2 个答案:

答案 0 :(得分:1)

这样的东西?

dictionary.Keys.Any(Function(key) key.StartsWith("189"))

或者你可以使用正则表达式进行更多的粒度控制:

dictionary.Keys.Any(Function(key) Regex.IsMatch(key, "^189[^\d]?")

答案 1 :(得分:1)

由于您只有有时需要忽略后缀字母,为了获得最大效率,我建议使用额外的HashSet(T)来存储数字部分。在字典中添加/删除元素时,还要添加/删除HashSet(T)中的数字。 HashSet(T).Contains方法是O(1),因此检查元素是否存在将是快速的。