Не работает \n в текстовом файле (C#)

172
26 ноября 2021, 06:30

Делаю программу C# при помощи SFML. Решил сделать поддержку разных языков при помощи обычных текстовых файлов. Попытался в тексте сделать перенос строк с помощью \n:

Но при чтении файла при помощи StreamReader'а он выводит полную строку С \n:

Вот как происходит чтение файла:

public static List<string> text = new List<string>();
public static void Load(string languageName)
        {
            StreamReader sr = new StreamReader(Environment.CurrentDirectory + $"\\Files\\Languages\\{languageName}.txt");
            while(!sr.EndOfStream)
            {
                string line = sr.ReadLine();
                if(line.StartsWith("//"))
                {
                    continue;
                }
                else
                {
                    text.Add(line);
                }
            }
            sr.Close();
        }

Если поставить \n\r ничего не поможет:

Вот сам файл: https://drive.google.com/file/d/1ZOCmMKdHcz3319u6ny58EWDjvMqyy0V5/view?usp=sharing

Answer 1

Всё просто, если пользоваться отладчиком VS.
После чтения из файла в строке оказывается не "\n\r", а "\\n\\r"

В вашем случае достаточно заменить \\ на \ и всё будет работать.
Для моего примера можно сделать так:

string[] lines = File.ReadAllLines("test.txt").Select(x => x.Replace("\\n\\r", "\n\r")).ToArray();

Для вашего примера с поддержкой комментариев можно сделать так:

string[] lines = File.ReadAllLines("test.txt").Where(x => !x.StartsWith("//")).Select(x => x.Replace("\\n\\r", "\n\r")).ToArray();
Answer 2

Зачем вы используете Escape последовательности в текстовом файле? При чтении из файла и последующем выводе текста файла в консоль, символ новой строки спокойной выводится как новая строка.

READ ALSO
С# winforms Как сделать из DataGridView checkedlistbox

С# winforms Как сделать из DataGridView checkedlistbox

Multiline текст в checkedListBox с#(winforms) - Код взял отсюда

166
парсинг поисковой выдачи Bing

парсинг поисковой выдачи Bing

Нужно спарсить ссылки из поисковой выдачи https://wwwbing

128
Unity и RigidBody

Unity и RigidBody

как заставить RigidBody разгоняться до определенной скорости, как правильно прикладывать силудвигаю танчик

75
PHP: include блокирует читаемый файл, или нет?

PHP: include блокирует читаемый файл, или нет?

Допустим, я пытаюсь писать в шаблон информацию через fwrite() в тот момент, когда другой скрипт PHP его читает и выполняет include'ом

223