В С#, в чем разница между \n и \r\n?

В С#, в чем разница между \n и \r\n?


person Aperture    schedule 21.10.2010    source источник
comment
Это не связано с C#, поскольку применимо почти ко всем языкам.   -  person leppie    schedule 21.10.2010


Ответы (8)


\n — Unix, \r — Mac, \r\n — Windows.

Иногда это создает проблемы, особенно при запуске кросс-платформенного кода. Вы можете обойти это, используя Environment.NewLine.

Пожалуйста, обратитесь к В чем разница между \r, \n и \r\n ?! для получения дополнительной информации. Приятного чтения

person Peter van Kekem    schedule 21.10.2010
comment
Поскольку в настоящее время Windows не так строга в этом, как раньше, поэтому она также принимает \n. - person Peter van Kekem; 24.03.2017
comment
@TobySmith Я знаю, что этот пост устарел, но вы можете попробовать написать файл с \n в качестве разрыва строки и открыть его в стандартном редакторе Windows. Он не будет делать разрыв строки, если вы не сделали \r\n - person Rüdiger; 16.08.2017
comment
В Windows 10 в Блокноте добавлена ​​поддержка всех типов окончания строки! blogs.msdn.microsoft.com/commandline /2018/05/08/ - person Peter van Kekem; 08.03.2019

Разница

Есть несколько символов, которые могут указывать на новую строку. Обычными являются эти два:

* '\n' or '0x0A' (10 in decimal) -> This character is called "Line Feed" (LF).
* '\r' or '0x0D' (13 in decimal) -> This one is called "Carriage return" (CR).

Разные операционные системы обрабатывают новые строки по-разному. Вот краткий список наиболее распространенных из них:

* DOS and Windows

Они ожидают, что новая строка будет комбинацией двух символов, а именно '\r\n' (или 13, за которой следует 10).

* Unix (and hence Linux as well)

Unix использует один '\n' для обозначения новой строки.

* Mac

Mac используют один файл '\r'.

Взято с здесь

person Dave    schedule 21.10.2010
comment
Насколько я знаю, Mac не использовали \r со времен OSX — теперь они используют \n. И \r\n используется почти всеми существующими интернет-протоколами уровня приложений, которые когда-либо работали с точки зрения линий. - person cHao; 28.12.2011

«\n» — это просто перевод строки (Unicode U+000A). Обычно это разделитель строк Unix.

«\r\n» — это возврат каретки (Unicode U+000D), за которым следует перевод строки (Unicode U+000A). Обычно это разделитель строк Windows.

person Jon Skeet    schedule 21.10.2010
comment
Джон, но если это только перевод строки, то почему текст на картинке выглядит так, как будто он также имеет возврат каретки i.stack.imgur.com/LKVCr.png ? если бы это был только перевод строки, то bbb... не должен быть слева от второй строки... - person Royi Namir; 05.05.2013
comment
@RoyiNamir: все зависит от носителя отображения. Итак, похоже, что консольная оболочка Windows теперь обрабатывает \n как полный разрыв строки, но это может быть не во всех версиях - и если вы просматриваете те же данные в виде файла в блокноте, вы не увидите разрыв строки. - person Jon Skeet; 05.05.2013

\n = LF (перевод строки) // Используется как символ новой строки в Unix

\r = CR (возврат каретки) // Используется как символ новой строки на Mac

\r\n = CR + LF // Используется как символ новой строки в Windows

(char)13 = \r = CR

Environment.NewLine = любой из приведенных выше кодов в зависимости от операционной системы.

// .NET предоставляет класс Environment, который предоставляет множество данных на основе операционных систем, поэтому, если приложение создано для Windows и вы используете CR + LF ("\n\r" вместо Environment.NewLine) в качестве символа новой строки в ваших строках, а затем Microsoft создаст виртуальную машину для запуска приложений .NET в Unix, тогда возникнет проблема. Поэтому вам всегда следует использовать Environment.NewLine, когда вам нужен символ новой строки. Теперь вам не нужно заботиться об операционной системе.

person Ankur Bhutani    schedule 25.06.2013

В основном сводится к стандарту Windows: \r\n и системам на базе Unix, использующим: \n

http://en.wikipedia.org/wiki/Новаястрока

person James Hulse    schedule 21.10.2010

\n - это разрыв строки, используемый Unix-подобными системами, \r\n используется окнами. Это не имеет ничего общего с С#.

person Adrian Grigore    schedule 21.10.2010

Это всего лишь \r\n and \n варианты.

\r\n используется в окнах

\n используется в Mac и Linux

person Thalaivar    schedule 21.10.2010

Речь идет о том, как операционная система распознает конец строки.

  • Пользователь Windows\r\n
  • Пользователь Mac\r
  • Линукс использует \n

Мораль: если вы разрабатываете для Windows, придерживайтесь \r\n. Или, что еще лучше, используйте строковые функции C# для работы со строками, которые уже учитывают окончания строк (WriteLine и т. д.).

person Palantir    schedule 21.10.2010