Почему \ n из файла ini не работает? - PullRequest
1 голос
/ 04 декабря 2010

Мне просто любопытно узнать название.

String a = "abc\ndef";
Console.Writeline(a);

Выход

abc
def

Затем я сохранил это значение в INI-файле и извлек его оттуда.

ini.iniwritevalue("a", "a", a);
string b = ini.inireadvalue("a", "a");

Тогда я показал это на консоли. Результат следующий:

abc\ndef

Почему \n не работает после того, как я получил его из INI-файла?

P.S. У меня есть файл ini.dll. Наша компания использует эту DLL для чтения и записи INI-файлов.

Ответы [ 3 ]

3 голосов
/ 04 декабря 2010

Интерпретация управляющего кода \ n в вашем исходном коде выполняется компилятором при разборе исходного файла.

Если вы просто читаете в файле как «данные» во время выполнения, такая интерпретация не обязательно произойдет.

Возможно, вам придется найти или написать функцию, которая принимает строку, содержащую escapeпоследовательности и преобразует их в двоичные значения (\ n обычно становится 0x0a)

3 голосов
/ 04 декабря 2010

Это потому, что \n в C # - это не просто \ и n, а escape-последовательность со специальным значением. \n считается одним символом и заканчивается строкой. Вы не получите его, когда просто прочитаете \ и n из файла.

Возможно, вы прочитали \\n оттуда. \\ также является escape-последовательностью, которая означает символ \. Все, что вам нужно сделать, это заменить \\n на \n, и все будет хорошо.

string s = ... //get the value
s = s.Replace("\\n", "\n");
1 голос
/ 04 декабря 2010

Вам нужно экранировать косую черту, когда вы пишете значение, например:

abc\\ndef
...