Вопрос по .net, c#, windows – Почему «\ n» дает новую строку в Windows?

17

Маркер переноса строки в Windows должен бытьCR+LF в то время как в Unix это простоLF.

Поэтому, когда я использую что-то вродеConsole.Write("line1\nline2");почему это работает "правильно" и дать мне две строки? Я ожидаю этого\n не работать, а только комбо\r\n должно сработать.

Что вы используете для просмотра такого файла? Oded
Это просто поведение обработчика консоли по умолчанию, которое назначено для Console.Out по умолчанию. Вам не повезет, если вы перенаправите вывод процесса консоли в файл и откроете этот файл в редакторе. Hans Passant
Я печатаю эту строку в консоли командной строки, используяConsole.Write(). user1032613
\ n произвел новую строку в Windows с момента дебюта Visual Studio. Я лично помню, как использовал его еще в VS6 в начале / середине 90-х. Escobar Ceaser
Скорее всего, C # неявно делает преобразование для вас. Brad Christie

Ваш Ответ

5   ответов
0

\ n - символ перевода строки.. \ R - возврат каретки, он перемещает пишущий инструмент в начало строки.

Большинство современных консолей / редакторов достаточно устойчивы, чтобы интерпретировать \ n как \ r \ n

1

когда вы выводите на консоль с помощью WriteLine (), он принимает escape-символ \ n. Когда вы используете StreamWriter и вызываете WriteLine (), вы нажимаете \ r \ n для перехода на новую строку. Я предполагаю, что консоль была запрограммирована на прием escape-символа \ n без возврата каретки \ r.

9

ложение C будет делать то же самое, если вы выводите0x0A на консоль.

Конечно, вы должны использовать Environment.NewLine для ваших новых линий. Environment.NewLine решает в\r\n в Windows а также\n в Unix-подобных системах.

1

Console интерпретация.

Другими словами, в то время как «Стандарт Windows» изCR + LF существует для файлов, толькоLF, или же\n привело к соответствующему возврату каретки и новой интерпретации строки в окнах консоли.

16

& APOS; \ п символ перевода строки Традиционно это заставляло принтер свернуть бумагу на одну строчку вверх.; \ г; является символом возврата каретки, который традиционно заставлял головку принтера перемещаться к дальнему левому краю бумаги.

На принтерах и консолях, которые интерпретируют символы таким образом, выводline1\nline2 было бы

line1
     line2

Многие консоли (и редакторы) будут интерпретировать \ n 'apos; означать, что вы хотите начать новую строкуand поместите курсор в начало этой новой строки. Это то, что вы видите здесь.

Вы должны использоватьEnvironment.NewLine вместо того, чтобы жестко кодировать какие-либо конкретные константы.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededtype myFileWithSlashNDelimitersError: User Rate Limit Exceeded
\nError: User Rate Limit ExceededConsole.WriteError: User Rate Limit Exceeded\rError: User Rate Limit Exceeded

Похожие вопросы