【发布时间】:2017-09-26 01:43:46
【问题描述】:
我有一个文本文件,其中只包含小写字母,除空格外没有标点符号。我想知道按字符读取文件的最佳方法,如果下一个字符是空格,则表示一个单词的结尾和新单词的开头。即在读取每个字符时将其添加到字符串中,如果下一个字符是空格,则将单词传递给另一个方法并重置,直到读取器到达文件末尾。
我正在尝试使用 StringReader 执行此操作,如下所示:
public String GetNextWord(StringReader reader)
{
String word = "";
char c;
do
{
c = Convert.ToChar(reader.Read());
word += c;
} while (c != ' ');
return word;
}
并将 GetNextWord 方法放在一个 while 循环中,直到文件末尾。这种方法有意义还是有更好的方法来实现这一点?
【问题讨论】:
-
请不要在标题前加上“C#:”之类的前缀。这就是标签的用途。
-
我认为你应该从文件中读取更大的块(比如 4096 字节),否则看起来很好......另外,我想知道它的最佳大小是什么 :)
-
这样构建字符串会生成很多对象(记住字符串是不可变的)。如果您想在读取文件时构建字符串,请使用
StringBUilder。 -
@ Niko 我该怎么做,因为我一次仍然需要 1 个字符? @Brian 好的,我会检查一下,谢谢您的帮助
-
如果您想要最快的方式并且有足够的内存,请使用新的MemoryMappedFile 类。
标签: c#