C# 使用文件文本校对文本框
我试图找出如何使用一个充满首字母缩略词的文本文件来校对和自动更正关键字列表。例如,我的文本框中可能有如下列表:C# 使用文件文本校对文本框,c#,textbox,text-files,C#,Textbox,Text Files,我试图找出如何使用一个充满首字母缩略词的文本文件来校对和自动更正关键字列表。例如,我的文本框中可能有如下列表: nec 1080p television nec hdtv television nec lcd tv etc. 在我的文本文件中,我会有如下内容: LCD TV NEC HDTV etc. 将首字母缩略词textfile与textbox文本(每个文本可能有100行)进行比较,并更正textbox中任何非大写文本的最快和最有效的方法是什么?有什么想法吗 textB
nec 1080p television
nec hdtv television
nec lcd tv
etc.
在我的文本文件中,我会有如下内容:
LCD
TV
NEC
HDTV
etc.
将首字母缩略词textfile与textbox文本(每个文本可能有100行)进行比较,并更正textbox中任何非大写文本的最快和最有效的方法是什么?有什么想法吗 textBox.Lines=replacetwithacronyms(textBox.Lines,File.ReadAllLines(acronymsPath)).ToArray();
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;
}
专用静态IEnumerable ReplaceWithAcronyms(IEnumerable行,IEnumerable首字母缩写)
{
foreach(行中的字符串行)
{
产生返回字符串。Join(“,
行。拆分(“”)。选择(word=>ReplaceWithAcronym(word,acronyms));
}
}
专用静态字符串替换为首字母缩略词(字符串字、IEnumerable首字母缩略词)
{
字符串首字母缩略词=首字母缩略词.FirstOrDefault(ac=>ac==word.toupper不变量());
if(首字母缩写==null)
{
返回词;
}
返回首字母缩略词;
}
ReplaceWithAcronyms获取文本框的行和文件的行,其中每行都是一个首字母缩写。
然后,它将每行拆分为单词,并将每个单词传递给替换为首字母缩略词。如果单词是首字母缩略词之一,它将返回,否则它将返回单词不变。
通过使用string.Join,单词是“unslitted”。结果将转换为数组,然后分配回文本框行
我没有检查它有多快,有几百行。为了提高性能,可以对首字母缩写使用哈希集。我不认为几百行真的是个问题。在尝试改进性能之前,我会尝试一下。也许它已经足够好了。textBox.Lines=replacementwithacronyms(textBox.Lines,File.ReadAllLines(acronymsPath)).ToArray();
专用静态IEnumerable ReplaceWithAcronyms(IEnumerable行,IEnumerable首字母缩写)
{
foreach(行中的字符串行)
{
产生返回字符串。Join(“,
行。拆分(“”)。选择(word=>ReplaceWithAcronym(word,acronyms));
}
}
专用静态字符串替换为首字母缩略词(字符串字、IEnumerable首字母缩略词)
{
字符串首字母缩略词=首字母缩略词.FirstOrDefault(ac=>ac==word.toupper不变量());
if(首字母缩写==null)
{
返回词;
}
返回首字母缩略词;
}
ReplaceWithAcronyms获取文本框的行和文件的行,其中每行都是一个首字母缩写。
然后,它将每行拆分为单词,并将每个单词传递给替换为首字母缩略词。如果单词是首字母缩略词之一,它将返回,否则它将返回单词不变。
通过使用string.Join,单词是“unslitted”。结果将转换为数组,然后分配回文本框行
我没有检查它有多快,有几百行。为了提高性能,可以对首字母缩写使用哈希集。我不认为几百行真的是个问题。在尝试改进性能之前,我会尝试一下。也许它已经足够好了。这就是我用来最终让它工作的东西。我使用了Pescolino提供的解决方案,然后用以下代码调用:
sortBox1 = ReplaceWithAcronyms(sortBox1, File.ReadAllLines(@"I:\acronyms.txt")).ToList();
这就是我用来让它最终发挥作用的方法。我使用了Pescolino提供的解决方案,然后用以下代码调用:
sortBox1 = ReplaceWithAcronyms(sortBox1, File.ReadAllLines(@"I:\acronyms.txt")).ToList();
这是一个只将它们全部大写的问题,还是还有拼写更正?这只会使它们相对于原始列表大写。因此,如果电视不在原始列表中,它应该保持不变?正确。它不在首字母缩略词列表中,因此保持不变。请检查,这是一个只将它们全部大写的问题,还是还有拼写更正?相对于原始列表,它只会将它们大写。因此,如果电视不在原始列表中,它应该保持不变?正确。它不在首字母缩略词列表中,因此保持不变。请检查。我建议改用<代码>字符串.Compare(string1、string2、StringComparison.OrdinalIgnoreCase)代码>鲍勃,你为什么要选择它,它会去哪里?我建议用<代码>字符串.Compare(string1、string2、StringComparison.OrdinalIgnoreCase)代码>鲍勃,你为什么选择它,它会去哪里?