C # удалить лишние возвраты каретки из потока - PullRequest
5 голосов
/ 04 августа 2011

Я читаю файл в виде потока: 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 ]

2 голосов
/ 04 августа 2011

Как насчет:

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

?Это читает построчно, а затем объединяет без разделителя.

2 голосов
/ 04 августа 2011

После просмотра вашего образца текста следующее удалит ваши единичные экземпляры 'r':

string text = File.ReadAllText(FilePath);

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

File.WriteAllText(FilePath + ".modified", text);
0 голосов
/ 04 августа 2011

Заменить разрывы строк в строке C #

Выше есть ответ. Вы можете прочитать файл в строку и затем удалить разрывы строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...