匹配字典键中的字符串

时间:2017-09-14 16:37:16

标签: c# dictionary

所以,如果我有一个字典:

Dictionary<string, string> namesDictionary= new Dictionary<string, string>
            {
                { "Paola", "Perú" },
                { "Paulanos", "Colombia" },
                { "Paulanas", "Ecuador" },
                { "Pamela",  "Venezuela"},
                { "Paulina",  "Brasil)"},
                { "Paolann",  "Paraguay"}
            };

我将使用函数设置String name =“”。

我想在字典键中找到并匹配名称,例如:

  • 如果name =“paola”,它会找到“Paola”,“Perú”而不是“Paolann”,“Paraguay”

  • 如果name =“Paulanoso”只找到{“Paulanos”,“Colombia”}而不是                 {“Paulanas”,“厄瓜多尔”},

.NET 2.0 如果有更好的选择,它就没有必要成为字典。

像字符一样的字符:

  • 如果name =“Paulanoso”(示例字符串,并不意味着什么)它只找到Paulanos,它不必完全匹配整个字符串
  • 即使名称字符串较大,它也会执行以下操作: name =“Paolanoso123” 它应该找到:{“Paulanos”,“Colombia”}

2 个答案:

答案 0 :(得分:2)

如果您不希望密钥匹配区分大小写,可以尝试以下操作;

var collection = new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase);
// fill collection
var value = collection["paola"];

但是,如果您必须在密钥中将PaulanosoPaulanos匹配,则需要使用匹配规则实施自定义字符串比较器。

答案 1 :(得分:1)

据我了解您的匹配标准:

var result = namesDictionary
    .FirstOrDefault(kv => kv.Key.Contains(name) || name.Contains(kv.Key)).Key;
相关问题