gpt4 book ai didi

c# - 在 StreamReader 中移动指针

转载 作者:太空宇宙 更新时间:2023-11-03 16:04:37 24 4
gpt4 key购买 nike

我有一个包含 block (标题和正文)的文件。我需要分开 block 。 header 是“他=”,正文可以是任何东西,例如'巨石很重'。所以一个典型的文件可能看起来像

he=sunny dayhe=boulder is heavyhe=大家好

我正在使用 StreamReader 的 Read 方法逐个字符地读取。

在程序中,使用 if 语句检查 h e 和 = 以确定它的标题。但是考虑一下沉重这个词。我需要一种方法将文件指针移回 h,因为它不是标题。

有没有办法在 StreamReader 中移动文件指针?上面的 header 主体示例只是用于解释的玩具示例。

最佳答案

由于 StreamReader 只能向前,所以您无法向后移动。然而,一切并没有丢失。一种常见的策略是使用缓冲区 变量并检查它。这是一些粗略的代码:

var buffer = new StringBuilder();

while(streamReader.Peek() >= 0)
{
//Add latest character to buffer
buffer.append(streamReader.Read());

//Check the three rightmost characters in the buffer for the occurance of he=
if(buffer.Length >= 3 && buffer.ToString().Substr(buffer.Length-3, 3) == "he=")
{
//We have found new header. Now we trim the header from the rest of the buffer to get the body
var newBody = buffer.ToString().Substr(0,buffer.Length-3);
//I'm assuming you'll be adding the body somewhere
bodies.Add(newBody);
//Now we clear the buffer
buffer.Clear();
}
}
//What's left in the buffer is also a body
bodies.Add(buffer.ToString());

关于c# - 在 StreamReader 中移动指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19961640/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com