C#从Stream中删除额外的回车符

时间:2011-08-04 10:00:25

标签: c# stream

我正在以流的形式阅读文件:Stream fin = File.OpenRead(FilePath); 有什么方法可以找到并删除该文件流中的所有回车符吗?

编辑:我们的目标是删除单个回车\r,并让回车保持原有的"\r\n"保持不变。

示例文件:

The key backed up in this file is:\r
\r\n
pub   2048R/65079BB4 2011-08-01\r
\r\n
      Key fingerprint = 2342334234\r
\r\n
uid                  test\r
\r\n
sub   2048R/0B917D1C 2011-08-01\r

结果应如下:

The key backed up in this file is:
\r\n
pub   2048R/65079BB4 2011-08-01
\r\n
      Key fingerprint = 2342334234
\r\n
uid                  test
\r\n
sub   2048R/0B917D1C 2011-08-01

EDIT2:正在运行的最终解决方案如下:

    static private Stream RemoveExtraCarriageReturns(Stream streamIn)
    {
        StreamReader reader = new StreamReader(streamIn);
        string key = reader.ReadToEnd();
        string final = key.Replace("\r\r", "\r");
        byte[] array = Encoding.ASCII.GetBytes(final);
        MemoryStream stream = new MemoryStream(array);
        return stream;
    }

我接受Stream使用StreamReader将其读入字符串,然后删除额外的回车符并将其写回Stream。 我的代码看起来不错或者我应该做些不同的事情吗?

3 个答案:

答案 0 :(得分:2)

怎么样:

string final = string.Join("", File.ReadLines(path));

?这逐行读取,然后在没有任何分隔符的情况下重新组合。

答案 1 :(得分:2)

查看示例文本后,以下内容将删除您的单个'r'实例:

string text = File.ReadAllText(FilePath);

text = text.Replace("\r\r", "\r");

File.WriteAllText(FilePath + ".modified", text);

答案 2 :(得分:0)

Replace Line Breaks in a String C#

上面有答案。您可以将文件读入字符串,然后删除换行符。