使用文件文本验证TextBox

本文关键字:验证 TextBox 文本 文件 | 更新日期: 2023-09-27 17:58:55

我正试图找出如何使用一个充满缩写词的文本文件来证明和自动更正关键字列表。例如,我的文本框中可能有一个列表,如下所示:

 nec 1080p television
 nec hdtv television
 nec lcd tv
 etc.

在我的文本文件中,我会有这样的东西:

 LCD
 TV
 NEC
 HDTV
 etc.

将首字母缩略词文本文件与文本框文本(每个文本框可能有100行长)进行比较,并更正文本框中任何非大写文本的最快、最有效的方法是什么?有什么想法吗?

使用文件文本验证TextBox

textBox.Lines = ReplaceWithAcronyms(textBox.Lines, File.ReadAllLines(acronymsPath)).ToArray();
private static IEnumerable<string> ReplaceWithAcronyms(IEnumerable<string> lines, IEnumerable<string> acronyms)
{
    foreach (string line in lines)
    {
        yield return string.Join(" ", 
            line.Split(' ').Select(word => ReplaceWithAcronym(word, acronyms)));
    }
}
private static string ReplaceWithAcronym(string word, IEnumerable<string> acronyms)
{
    string acronym = acronyms.FirstOrDefault(ac => ac == word.ToUpperInvariant());
    if (acronym == null)
    {
        return word;
    }
    return acronym;
}

ReplaceWithAcronyms采用文本框中的行和文件中的行,其中每行都是一个缩写。然后,它将每一行拆分为单词,并将每个单词传递给ReplaceWithAcronym。如果单词是首字母缩略词之一,它将返回,否则它将返回单词不变。这些单词是用字符串"unsplitted"的。参加结果被转换为一个数组,然后分配回文本框行。

我没有检查它有多快,有几百行。为了提高性能,可以使用HashSet作为缩写词。我不认为几百行真的是个问题。在尝试提高绩效之前,我会先尝试一下。也许它已经足够好了。

这就是我过去最终让它工作的原因。我使用了Pescolino的溶液,然后用来称呼它

sortBox1 = ReplaceWithAcronyms(sortBox1, File.ReadAllLines(@"I:'acronyms.txt")).ToList();