繁体   English   中英

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

[英]Unity C# Recognizing \n when reading in from text file

我有一个包含几行字符串的文本文件,例如“ Commander”和“ 44105”。 我将它们读入文件,然后将其显示在屏幕上。 我需要在某些点创建换行符,但是当我在文本文件中使用\\ n时,程序似乎无法识别为换行符,而只是在字符串上显示\\ 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识别为特殊字符。 我将非常感谢您提供一些帮助,以帮助您解决此问题。

好的,在澄清问题之后,这可能对您有用

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可能对您不起作用,但为示例起见,它将起作用。 因此,这里的逻辑是读取字符串中的文本文件,然后使用字符串的Split方法,该方法将给定的定界符数组拆分初始字符串并返回字符串数组, RemoveEmptyEntries表示结果中将没有空字符串数组。 既然您已经确定了条目,则可以使用它们进行所需的操作,在这种情况下,我们将它们Trim (这样就不会有开头和结尾的空格),并且将dataEntry追加到结果后,并换行(请注意,如果如果您有大量数据,则使用StringBuilder附加结果将是更好的性能选择,因为它比使用+附加字符串在此处添加更多信息更快: http : //support.microsoft.com/kb/306822

编辑之前

从文本文件读取时,流阅读器会识别换行符,并且如果您的文本文件带有几行文本,则您的方法将准确地读取换行符,但是,如果您的单个行文本文件中带有“ \\ n”,则没有区别而不是其他两个字符,例如,如果您的文本文件包含以下行:

“文字\\ n更多文字”

您的方法将只获得该字符串的一行。 因此,如果您愿意,可以手动解析以下字符串,并用“ \\ n”将其分割,然后在显示字符串中手动添加新行(如果您要实现的话,我可以为您提供帮助)。

但是,如果我是我,我只会使用标准的换行符将数据保存在文本文件中,读者会识别这些换行符,例如,您可以执行以下操作:

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 / rn和rn-forum = csharplanage之间的区别是什么

希望对您有所帮助:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM