匹配字符串
问题描述:
,所以如果我有一个像一本字典:匹配字符串
Dictionary<string, string> namesDictionary= new Dictionary<string, string>
{
{ "Paola", "Perú" },
{ "Paulanos", "Colombia" },
{ "Paulanas", "Ecuador" },
{ "Pamela", "Venezuela"},
{ "Paulina", "Brasil)"},
{ "Paolann", "Paraguay"}
};
我将有字符串名称=“”通过功能设置好的。
我想找到,并在字典中的键匹配的名称,如:
如果name =“保拉”,找到“保拉”,“秘鲁”,而不是“Paolann”,“巴拉圭“
如果name = ”Paulanoso“ 只发现{ ”Paulanos“, ”哥伦比亚“},而不是 { ”Paulanas“, ”厄瓜多尔“},
.NET 2.0 这n值如果有更好的选择,它是必要的,因为它是一本字典。
喜欢的东西逐个字符,如:
- 如果name =“Paulanoso”(例如字符串,并不意味着任何东西)发现只有Paulanos,它不必须
- 即使完全匹配整个字符串名称字符串是更大会做这样的事情: 名=“Paolanoso123” 它应该找到:{“Paulanos”,“哥伦比亚”}
答
如果你不希望的关键比赛是区分大小写, 你可以试试 下列;
var collection = new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase);
// fill collection
var value = collection["paola"];
但是,如果你要在密钥匹配Paulanoso
到Paulanos
,你需要实现自定义字符串比较器与您的匹配规则。
+1
确实,或者如果您的匹配算法是更复杂的是你可以定义自己的IEqualityComparer实现,并将其传递给字典的构造函数。 https://msdn.microsoft.com/zh-cn/library/ms132151(v=vs.110).aspx – Simon
答
据我理解你匹配的标准:
var result = namesDictionary
.FirstOrDefault(kv => kv.Key.Contains(name) || name.Contains(kv.Key)).Key;
它应该是大小写敏感的关系吗? –
“Paulanoso” 匹配 “Paulanos”?你能解释一下实际的匹配算法是什么吗? –
Paulanoso是一个错字我猜 –