C#StreamReader ReadLine String不添加BreakLine

时间:2014-06-24 11:47:10

标签: c# streamreader

我想在字符串中添加一个断行符。 我正在使用带有readline的streamreader,但它没有成为breakline。 这是代码:

        StreamReader re;
        re = new StreamReader("ficheiro.txt", Encoding.UTF8);
        string input = null;
        string textoCompleto = "";
        while ((input = re.ReadLine()) != null)
        {
            textoCompleto += input.ToString();
        }
        listBoxTextoOriginal.Items.Add(textoCompleto);
        string[] arrayPalavras = textoCompleto.Split(' ');
        lblContadorPalavras.Text = arrayPalavras.Length.ToString();
        Array.Sort(arrayPalavras);
        for (int i = 0; i < arrayPalavras.Length; i++)
        {
            listBoxPalavrasOrdenadas.Items.Add(arrayPalavras[i]);
        }

这是ficheiro.txt文件:

  

“Estou hoje perplexo,como quem pensou e achou e esqueceu。

     

Estou hoje dividido entre a lealdade que devo

     

Tabacaria do outro lado da rua,como coisa real por论坛,

     

这是一个真人公社,como coisa real por dentro。“

现在正在做的事情: enter image description here

我需要做些什么来完成这项工作? 另外,我必须使用readline,因为这是对学校的练习

3 个答案:

答案 0 :(得分:3)

StreamReader.ReadLine不会返回包含后面的换行符的字符串,它会返回一个字符串,其中包含行上的所有内容,直到该换行符

当你将所有字符串连接成一个大字符串时,你就会失去换行符。

为什么你不仅仅用这个替换整个循环?

textoCompleto = re.ReadToEnd();

这实际上会将整个文件作为一个字符串返回,并附带换行符。

如果您不能或不胜,那么您应该确保在循环中添加换行符:

textoCompleto += input + Environment.NewLine;

注意,我认为您之后真正的是:

using (var re = new StreamReader("ficheiro.txt", Encoding.UTF8))
{
    string input;
    while ((input = re.ReadLine()) != null)
        listBoxTextoOriginal.Items.Add(input);
}

这将:

  • 完成后,请正确处理StreamReader(请参阅using statementIDisposable]
  • 不使用文件中的所有行构建字符串
  • 而是将文件的每一行添加为列表框中的唯一项目

另请注意,如果这不是一个具有任意规则的练习,您可以执行此操作而不是整个代码:

listBoxTextoOriginal.Items.Addrange(File.ReadAllLines("ficheiro.txt", Encoding.UTF8));

答案 1 :(得分:0)

虽然它可以修复,但你正在做的是做多少工作的方法:

var fileContents = File.ReadAllText("ficheiro.txt", Encoding.UTF8);

listBoxTextoOriginal.Items.Add(fileContents);

你去吧。换行符仍然是文件中的内容。

答案 2 :(得分:0)

嗯,ReadLine()方法不会在任何地方插入新行,它只是读取每行的行。如果你希望你的textoCompleto变量在txt文件所在的地方都有换行符,你可以只读一次,例如使用

 textoCompleto = re.ReadToEnd();

这将读取整个流并将其内容放入textoCompleto。

无论如何,如果你必须使用ReadLine()方法,你只需这样做:

while ((input = re.ReadLine()) != null)
{
    textoCompleto += input.ToString() + "\r\n";
}

\ r和\ n是转义字符,这意味着它们不会被解释为它们,但意味着特定的东西:\ n是换行符,\ r \ n是回车符...一起它们是CRLF,CarrierReturn-LineFeed,或者,正如我们所说的,是一个换行符。祝好运! :)