1

所以我有代码需要检查文件是否已经被分割为每 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
}

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

4

2 回答 2

1

你不能写任何东西到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;
            }
        }
    }
于 2013-05-07T19:54:07.657 回答
1

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

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


有人为此提供了帮助的有趣评论:您还可以创建一个 StreamWriter 来编写您正在阅读的 Stream 并进行更正。然后你得到产生的 Stream 并将其传递给你需要的东西。

于 2013-05-07T19:45:27.517 回答