You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中如何判断字典是否含带通配符的键并获取匹配键?

用LINQ实现字典键的通配符匹配判断与查询

当然可以用LINQ实现这个需求,结合通配符匹配逻辑就能完成,下面给两种常用实现方式:

方法一:结合正则表达式

把通配符*转换为正则表达式的任意匹配符.*,再通过LINQ的Any和Where方法完成判断与查询:

首先引入必要命名空间:

using System.Linq;
using System.Text.RegularExpressions;

判断是否存在匹配键

// 将"A*C"转换为正则表达式规则:以A开头、以C结尾,中间任意字符
bool hasMatchedKey = myDict.Keys.Any(key => Regex.IsMatch(key, @"^A.*C$"));
// 此处hasMatchedKey结果为true

获取所有匹配的键

List<string> matchedKeys = myDict.Keys.Where(key => Regex.IsMatch(key, @"^A.*C$")).ToList();
// 此处matchedKeys结果为["ABC"]

方法二:使用WildcardPattern(.NET Core 3.0+)

如果是.NET Core 3.0及以上版本,直接用System.IO.WildcardPattern更省心,它原生支持通配符语法:

引入命名空间:

using System.Linq;
using System.IO;

判断是否存在匹配键

WildcardPattern wildcard = new WildcardPattern("A*C", WildcardOptions.None);
bool hasMatchedKey = myDict.Keys.Any(key => wildcard.IsMatch(key));

获取所有匹配的键

List<string> matchedKeys = myDict.Keys.Where(key => wildcard.IsMatch(key)).ToList();

两种方法对比:正则表达式适合更复杂的匹配规则,WildcardPattern则对通配符场景更友好,代码可读性更高。

内容的提问来源于stack exchange,提问作者Jaume

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 14:22:11