好的,所以我基本上试图将每行包含1个单词的.txt文件的内容加载到字典中。
当该文件中的单词是英文时,我没有遇到任何问题,但是将文件更改为带有重音的语言,我开始遇到问题。
在创建流阅读器时,还必须更改编码,在将单词添加到词典时,也要在ToLower方法中更改文化。
基本上我现在有类似的东西:
if (!dict.ContainsKey(word.ToLower(culture)))
dict.Add(word.ToLower(culture), true);
问题是像“esta”和“está”这样的词被认为是相同的。那么,有没有办法将ContainsKey方法设置为特定语言,还是我们需要在类似的行中实现某些东西?无论哪种方式,我都是c#的新手,所以我想请一个例子。
另一个问题淹没了新文件......在一百个单词后,它停止添加文件的其余部分,留下一个字不完整......但是我无法看到该字中的任何特殊字符以结束执行方法,关于这个问题的任何想法?
非常感谢。
编辑: 使用Jon Skeet sugestion解决了第一个问题。
关于第二个问题: 好的,将文件格式更改为UTF8并删除了流阅读器中的编码,因为它现在可以正确识别重音符号。现在就第二个问题测试一些东西。
第二个问题也解决了,这是我的一个错误......耻辱......
快速回答所有人,特别是Jon Skeet。
答案 0 :(得分:7)
我假设你试图让词典不区分大小写。不要调用ToLower
,而是使用Dictionary
的构造函数,它使用相等比较器 - 并使用StringComparer.Create(culture, true)
构造一个合适的比较器。
我不知道你的第二个问题是什么 - 我们需要更多细节来诊断它,包括你正在使用的代码,理想情况。
编辑:UTF-7几乎肯定不正确的编码。不要只是猜测编码;找出它真正意义上的东西。这个文本文件来自哪里?你能成功打开什么?
我怀疑至少你的一些问题是由于使用UTF-7。
答案 1 :(得分:1)
问题在于打开要读取的文件时使用的enconding。看起来您可能正在使用ASCIIEncoding。
.NET在内部处理字符串为UTF-8,因此这种问题不会在内部发生。