我想在字符串中添加一个断行符。 我正在使用带有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。“
现在正在做的事情:
我需要做些什么来完成这项工作? 另外,我必须使用readline,因为这是对学校的练习
答案 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);
}
这将:
另请注意,如果这不是一个具有任意规则的练习,您可以执行此操作而不是整个代码:
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,或者,正如我们所说的,是一个换行符。祝好运! :)