我有一个仅包含小写字母且除空格外没有标点符号的文本文件。我想知道逐字符读取文件的最佳方式,如果下一个字符是空格,则表示一个单词的结尾和一个新单词的开头。即,当每个字符被读取时,它被添加到一个字符串中,如果下一个字符是空格,则该单词被传递给另一个方法并重置,直到读取器到达文件末尾。
我正在尝试使用 StringReader 执行此操作,如下所示:
public String GetNextWord(StringReader reader)
{
String word = "";
char c;
do
{
c = Convert.ToChar(reader.Read());
word += c;
} while (c != ' ');
return word;
}
并将 GetNextWord 方法放入 while 循环中,直到文件结束。这种方法是否有意义,或者是否有更好的方法来实现这一点?
最佳答案
String
库提供了一种简单的方法来做到这一点:string.Split()
:如果您读入整个字符串,C# 可以在每个空格处自动拆分它:
string[] words = reader.ReadToEnd().Split(' ');
words
数组现在包含文件中的所有单词,您可以随意使用它们。
此外,您可能想要研究 System.IO
命名空间中的 File.ReadAllText
方法 - 它可能会让您的文件导入文本变得更加轻松。
编辑:我想这是假设您的文件不是非常大;只要整个事情都可以合理地读入内存,这将最容易工作。如果您有数以千兆字节的数据要读入,您可能会想避开它。不过,我建议尽可能使用这种方法:它可以更好地利用您所拥有的框架。
关于c# - 逐字读取文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9740557/