将一个字符串拆分成行?

时间:2014-03-26 18:44:33

标签: c#

这是代码;

        foreach (var file in d.GetFiles("*.xml"))
        {
            string test = getValuesOneFile(file.ToString());

            result.Add(test);

            Console.WriteLine(test);
            Console.ReadLine();
        }

        File.WriteAllLines(filepath + @"\MapData.txt", result);

以下是控制台中的内容;

[30000]
total=5
sp 0 -144 152 999999999
sp 0 -207 123 999999999
sp 0 -173 125 999999999
in00 1 -184 213 999999999
out00 2 1046 94 40000

以下是文本文件中的样子(在循环结束时写入)。

[30000]total=5sp 0 -144 152 999999999sp 0 -207 123 999999999sp 0 -173 125 999999999in00 1 -184 213 999999999out00 2 1046 94 40000

我需要它以与控制台输出相同的样式编写行。

3 个答案:

答案 0 :(得分:3)

WriteAllLines将使用环境新行字符串分隔每个值,但是,在整个计算机历史记录中,已使用许多可能的不同字符来表示新行。您正在使用某些期望不同类型的新行分隔符的程序查看文本文件。您应该使用不同的程序来查看该文件的值;如果要正确处理这种类型的分隔符(或者可以处理任何类型的分隔符),您应该将程序配置为期望给定类型的分隔符,或者您需要将WriteAllLines替换为手册写入使用另一个新行分隔符的字符串的方法。

答案 1 :(得分:1)

问题无疑是您在输出中寻找换行符的方式。在Environment.NewLine写的每个字符串之后将插入WriteAllLines

我建议在NotePad ++中打开输出文件,然后打开View-> ShowSymbol->显示行尾以查看文件中的行尾字符。例如,在我的机器上,每行末尾的[CR][LF](回车/换行)是Windows的标准。

答案 2 :(得分:1)

而不是WriteAllLines您可能只想手动编写文本:

string textToWrite = "";
foreach (var res in result)
{
  textToWrite += res.Replace("\r","").Replace("\n",""); //Ensure there are no line feeds or carriage returns
  textToWrite += "\r\n"; //Add the Carriage Return
}
File.WriteAllText(filepath + @"\MapData.txt", textToWrite)