Unity C#从文本文件中读取时识别\ n

时间:2014-07-26 21:53:58

标签: c# io unity3d text-files

我有一个包含多行字符串的文本文件,例如“Commander”和“44105”。我正在将它们读入一个文件,然后我将在屏幕上显示它们。我需要在某些点创建换行符,但是当我在文本文件中使用\ n时,程序似乎不会识别为新行,而只是在字符串上显示字符串时显示\ n。

Reader = new StreamReader("Assets/CorrectAnswers.txt", Encoding.Default);
while (!Reader.EndOfStream && turnOff == false)
{
    lineReader = Reader.ReadLine();
    if (problemIndex == questionIndex)
    {
        answer = lineReader;
        turnOff = true;
    }
    questionIndex += 1;
}

其他所有工作都很好,它只是不认识\ n是一个特殊的角色。我非常感谢帮助找出如何解决这个问题。

1 个答案:

答案 0 :(得分:2)

好的,在澄清了这个问题之后,可能对你有用什么

List<string> lines = new List<string>();
using (StreamReader reader = new StreamReader("Assets/test.txt"))
{
    string lines = reader.ReadToEnd();
    Debug.Log(lines);

    var splitText = lines.Split(new string[] { "|" }, // "\\n" in your case 
        System.StringSplitOptions.RemoveEmptyEntries);

    string result = String.Empty;
    foreach (var dataEntry in splitText)
    {
        string dataToParse = dataEntry.Trim();
        result += dataToParse + Environment.NewLine;
    }

    Debug.Log(result);
}

请注意,如果您尝试阅读的文件非常大ReadToEnd可能对您不起作用,但为了示例,它会起作用。所以这里的逻辑是用字符串读取文本文件,然后使用string的Split方法,它通过给定的分隔符数组拆分初始字符串并返回一个字符串数组,RemoveEmptyEntries意味着那里结果数组中不会出现空字符串。现在您已经确定了您的条目,您可以对它们进行必要的操作,在这种情况下我们Trim它们(因此不会有前导和结束空格)并且我们将dataEntry附加到带有新行的结果(请注意,如果您拥有大量数据,那么使用StringBuilder附加结果会比使用+更多信息附加字符串更快,从而更好地表现性能:http://support.microsoft.com/kb/306822

编辑前

从文本文件中读取时,流阅读器会识别换行符,如果你的文本文件包含一些文本行,你的方法会准确地读取它们,但是如果你有一行单行文本文件&#34; \ n&#34 ;在它中它将与任何其他两个字符没有区别,例如,如果您的文本文件包含如下行:

&#34; text \ n more text&#34;

你的方法将只获得该字符串的一行。因此,如果您希望您可以手动解析以下字符串,将其拆分为&#34; \ n&#34;并在显示字符串中手动添加新行(如果您希望实现这一点,我可以帮助您。)

但如果我是你,我会用标准新行保存文本文件中的数据,读者会识别,例如你可以这样做:

List<string> dataToWrite = new List<string>(){
    "firstLine", "secondLine", "thirdLine"};

using (StreamWriter writer = new StreamWriter("Assets/testWrite.txt"))
{
    foreach (var line in dataToWrite)
    {
        writer.WriteLine(line);
        //writer.Write(line + Environment.NewLine);
        //writer.Write(line + "\r\n");
    }
}

请注意,这两个注释行也适合您,有关新行的更多信息,请查看以下链接:http://social.msdn.microsoft.com/Forums/en-US/47af2197-26b4-4b9e-90e8-bfa9d5cd05b4/what-is-the-deference-between-r-n-and-rn-?forum=csharplanguage

我希望它有所帮助,问候:)