c# - 逐字读取文本文件

标签 c#

我有一个仅包含小写字母且除空格外没有标点符号的文本文件。我想知道逐字符读取文件的最佳方式,如果下一个字符是空格,则表示一个单词的结尾和一个新单词的开头。即,当每个字符被读取时,它被添加到一个字符串中,如果下一个字符是空格,则该单词被传递给另一个方法并重置,直到读取器到达文件末尾。

我正在尝试使用 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/

相关文章:

c# - TransactionScope 检查事务是否提交正常

c# - 显示项目集合时忽略 DebuggerDisplay

c# - 虚拟属性和延迟加载

c# - IDX10501 : Signature validation failed. 无法匹配 key

javascript - 如何在 ASP.NET MVC 中通过客户端验证比较 2 个值?

c# - OpenIddict 授权请求未处理

c# - 如何将XML转换成XPS格式进行打印

c# - ConcurrentDictionary.TryUpdate 方法中的 ComparisonValue 参数的原因是什么?

c# - 出现错误 “value ' 0' is not a valid value”

c# - 路由捕获出错