C# StreamReader,用于自定义分隔符的“ReadLine”

2023-12-21

拥有该功能的最佳方式是什么StreamReader.ReadLine()方法,但带有自定义(字符串)分隔符?

我想做这样的事情:

String text;
while((text = myStreamReader.ReadUntil("my_delim")) != null)
{
   Console.WriteLine(text);
}

我尝试自己使用Peek() and StringBuilder,但是效率太低了。我正在寻找建议或可能的开源解决方案。

Thanks.

Edit

我应该早点澄清这一点......我已经看到了这个答案 https://stackoverflow.com/questions/6655246/how-to-read-text-file-by-particular-line-separator-character/6655492#6655492但是,我不想将整个文件读入内存。


我想我会发布我自己的解决方案。看起来效果还不错,而且代码也比较简单。欢迎发表评论。

public static String ReadUntil(this StreamReader sr, String delim)
{
    StringBuilder sb = new StringBuilder();
    bool found = false;

    while (!found && !sr.EndOfStream)
    {
       for (int i = 0; i < delim.Length; i++)
       {
           Char c = (char)sr.Read();
           sb.Append(c);

           if (c != delim[i])
               break;

           if (i == delim.Length - 1)
           {
               sb.Remove(sb.Length - delim.Length, delim.Length);
               found = true;
           }
        }
     }

     return sb.ToString();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# StreamReader,用于自定义分隔符的“ReadLine” 的相关文章

随机推荐