从文本框 C# 中搜索字典以匹配键
Searching dictionary for matching key from a textbox C#
我正在阅读一个包含缩写和完整版本的 csv 文件,例如 LOL,大笑。我创建了一个字典,其中缩写是键,完整版本是值。
'''
private void btnFilter_Click(object sender, RoutedEventArgs e)
{
var keys = new List<string>();
var values = new List<string>();
using (var rd = new StreamReader("textwords.csv"))
{
while (!rd.EndOfStream)
{
var splits = rd.ReadLine().Split(',');
keys.Add(splits[0]);
values.Add(splits[1]);
}
}
var dictionary = keys.Zip(values, (k, v) => new { Key = k, Value = v }).ToDictionary(x => x.Key, x => x.Value);
foreach (var k in dictionary)
{
//
}
aMessage.MessageContent = txtContent.Text;
}
'''
我正在使用一个按钮来检查文本框 txtContent 是否包含文本中的任何缩写并将其更改为完整版本。因此,如果文本框包含以下内容。单击按钮后“将要挂机”会将其更改为“将要离开键盘”。
我想编写一个 foreach 循环来检查任何缩写,延长它们,然后将其保存到字符串变量 MessageContent。
谁能告诉我解决这个问题的最佳方法,因为我不确定如何处理来自文本框的输入?
谢谢
如果缩写正确,即不需要模糊逻辑,则可以使用各种 .NET 对象并相当快速地搜索键。
if(dict.ContainsKey(myKey))
{
}
我是徒手画的,所以它可能是 dict.Keys.Contains() 或类似的。关键是你可以直接查字典而不是循环。
如果您需要进行更模糊的搜索,您可以利用 LINQ 编写查询以极快地(和几行)迭代对象集合。
至于你的,你会迭代 dictionary.Keys 来搜索键,但我仍然不明白你为什么需要额外的代码。
您可以只使用 LINQ 读取和创建字典对象:
var dictionary = File.ReadAllLines(@"textwords.csv")
.Select(x => x.Split(",",StringSplitOptions.RemoveEmptyEntries))
.ToDictionary(key => key.FirstOrDefault().Trim(),
value => value.Skip(1).FirstOrDefault().Trim());
我正在阅读一个包含缩写和完整版本的 csv 文件,例如 LOL,大笑。我创建了一个字典,其中缩写是键,完整版本是值。
'''
private void btnFilter_Click(object sender, RoutedEventArgs e)
{
var keys = new List<string>();
var values = new List<string>();
using (var rd = new StreamReader("textwords.csv"))
{
while (!rd.EndOfStream)
{
var splits = rd.ReadLine().Split(',');
keys.Add(splits[0]);
values.Add(splits[1]);
}
}
var dictionary = keys.Zip(values, (k, v) => new { Key = k, Value = v }).ToDictionary(x => x.Key, x => x.Value);
foreach (var k in dictionary)
{
//
}
aMessage.MessageContent = txtContent.Text;
}
'''
我正在使用一个按钮来检查文本框 txtContent 是否包含文本中的任何缩写并将其更改为完整版本。因此,如果文本框包含以下内容。单击按钮后“将要挂机”会将其更改为“将要离开键盘”。
我想编写一个 foreach 循环来检查任何缩写,延长它们,然后将其保存到字符串变量 MessageContent。
谁能告诉我解决这个问题的最佳方法,因为我不确定如何处理来自文本框的输入?
谢谢
如果缩写正确,即不需要模糊逻辑,则可以使用各种 .NET 对象并相当快速地搜索键。
if(dict.ContainsKey(myKey))
{
}
我是徒手画的,所以它可能是 dict.Keys.Contains() 或类似的。关键是你可以直接查字典而不是循环。
如果您需要进行更模糊的搜索,您可以利用 LINQ 编写查询以极快地(和几行)迭代对象集合。
至于你的,你会迭代 dictionary.Keys 来搜索键,但我仍然不明白你为什么需要额外的代码。
您可以只使用 LINQ 读取和创建字典对象:
var dictionary = File.ReadAllLines(@"textwords.csv")
.Select(x => x.Split(",",StringSplitOptions.RemoveEmptyEntries))
.ToDictionary(key => key.FirstOrDefault().Trim(),
value => value.Skip(1).FirstOrDefault().Trim());