如何在满足条件时向流读取器添加换行符



所以我有代码需要检查文件是否已经每50个字符被分割。99%的情况下,我看到的是已经分开的,每行有50个字符,但也有可能是单行,我需要每50个字符添加一个换行符。这个文件总是以流的形式呈现给我。

一旦我有了正确格式化的文件,我就按需要处理它。

但是,我不确定如何检查流是否正确格式化。

这是我必须检查第一行是否大于50个字符的代码(一个可能需要分割的指示符)。

var streamReader = new StreamReader(s);
var firstLineCount = streamReader.ReadLines().Count();
if(firstLineCount > 50)
{
//code to add line breaks
}
//once the file is good
using(var trackReader = new TrackingTextReader(streamReader))
{
//do biz logic
}

如何在流阅读器中添加换行符?

我会将所有行添加到List<string>。(一行一行)检查列表中的每个项目(使用for,而不是foreach,因为我们将插入项目)。

如果列表中的某项超过50个字符。使用item.SubString(50)向列表的下一个索引添加一个项目(第50个字符之后的所有字符串)。并使用YourList[i] = YourList[i].SubString(0,50)切割当前索引项的最终值。


有人帮忙做了一个有趣的评论:你也可以创建一个StreamWriter来写你正在阅读的带有更正的流。然后获得生成的流并将其传递给所需的内容。

你不能写任何东西到TextReader,因为…它是一个阅读器。这里的选项是创建一个格式良好的数据副本:

    private IEnumerable<string> GetWellFormedData(Stream s)
    {
        using (var reader = new StreamReader(s))
        {
            while (!reader.EndOfStream)
            {
                var nextLine = reader.ReadLine();
                if (nextLine.Length > 50)
                {
                    // break the line into 50-chars fragments and yield return fragments
                }
                else
                    yield return nextLine;
            }
        }
    }

相关内容

  • 没有找到相关文章

最新更新