C# 从文本框C中搜索匹配键的词典#

C# 从文本框C中搜索匹配键的词典#,c#,wpf,dictionary,wpf-controls,C#,Wpf,Dictionary,Wpf Controls,我正在读一个csv文件,其中包含缩写和完整版本,例如LOL,大笑。我创建了一个字典,其中缩写是关键,完整版本是值 ''' private void btnFilter\u单击(对象发送方,路由目标) { var keys=新列表(); var值=新列表(); 使用(var rd=newstreamreader(“textwords.csv”)) { 而(!rd.EndOfStream) { var splits=rd.ReadLine().Split(','); 添加(拆分[0]); 添加(拆分

我正在读一个csv文件,其中包含缩写和完整版本,例如LOL,大笑。我创建了一个字典,其中缩写是关键,完整版本是值

'''

private void btnFilter\u单击(对象发送方,路由目标)
{
var keys=新列表();
var值=新列表();
使用(var rd=newstreamreader(“textwords.csv”))
{
而(!rd.EndOfStream)
{
var splits=rd.ReadLine().Split(',');
添加(拆分[0]);
添加(拆分[1]);
}
}
var dictionary=keys.Zip(值,(k,v)=>new{Key=k,Value=v}).ToDictionary(x=>x.Key,x=>x.Value);
foreach(字典中的var k)
{
//
}
aMessage.MessageContent=txtContent.Text;
}
'''

我正在使用一个按钮来检查文本框txtContent是否包含文本中的任何缩写,并将其更改为完整版本。因此,如果文本框包含以下内容。点击按钮后,“将成为AFK”将更改为“将远离键盘”

我想编写一个foreach循环,检查缩写,拉长它们,然后将其保存到字符串变量MessageContent中

有人能告诉我最好的方法吗?因为我不知道如何使用文本框的输入来实现这一点


谢谢

如果abbrev是正确的,也就是说,您不需要模糊逻辑,那么您可以使用各种.NET对象并快速搜索关键字

if(dict.ContainsKey(myKey))
{
}
我是徒手画的,所以可能是dict.Keys.Contains()或类似的。关键是你可以直接搜索字典而不是循环搜索

如果需要进行更模糊的搜索,可以利用LINQ编写查询,以极快的速度(和很少的行)迭代对象集合


至于您的,您可以迭代dictionary.Keys到seach Keys,但我仍然不明白您为什么需要额外的代码。

您可以使用LINQ读取并创建dictionary对象:

 var dictionary = File.ReadAllLines(@"textwords.csv")
                  .Select(x => x.Split(",",StringSplitOptions.RemoveEmptyEntries))
                   .ToDictionary(key => key.FirstOrDefault().Trim(), 
                    value =>  value.Skip(1).FirstOrDefault().Trim());

你为什么不使用合适的字典类?在字典中检索键/值非常简单。我对WPF相当陌生,所以我不确定如何直接在字典中读取.CSV,而是选择转换两个列表。啊,谢谢,这是一种更好的方法,我会很快纠正它。
 var dictionary = File.ReadAllLines(@"textwords.csv")
                  .Select(x => x.Split(",",StringSplitOptions.RemoveEmptyEntries))
                   .ToDictionary(key => key.FirstOrDefault().Trim(), 
                    value =>  value.Skip(1).FirstOrDefault().Trim());