首页 > 解决方案 > 从文本框 C# 中搜索匹配键的字典

问题描述

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

'''

    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 是否包含文本中的任何缩写并将其更改为完整版本。因此,如果文本框包含以下内容。单击按钮后,“将要AFK”将其更改为“将要远离键盘”。

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

任何人都可以向我展示解决此问题的最佳方法,因为我不确定如何使用来自文本框的输入来执行此操作?

谢谢

标签: c#wpfdictionarywpf-controls

解决方案


您可以只使用 LINQ 来读取和创建字典对象:

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

推荐阅读