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

По теме...

10 ответов

Решение

\n это Unix, \r это Mac, \r\n это винда.

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

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

Различия

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

* '\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

Маки используют один '\r',

Взято отсюда

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

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

\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) в качестве символа новой строки в ваши строки, а затем MS создает виртуальную машину для запуска приложений.Net в Unix, тогда будут проблемы. Таким образом, вы всегда должны использовать Environment.NewLine, когда вам нужен символ новой строки. Теперь вам не нужно заботиться об операционной системе.

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

http://en.wikipedia.org/wiki/Newline

Они просто \r\n and \n варианты.

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

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

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

Использование Environment.NewLine и не волнует

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

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

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

Вы можете вставить одно, другое или оба:

  • вставкиU+000DU+000A
  • \n\rвставкиU+000AU+000D

Если вы намерены указать «конец строки» , разные платформы и разные технологии, ожидайте, что вы вставите разные вещи:

  • Windows: U+000DU+000A (т.е.)
  • HTTP: U+000DU+000A (т.е. \r\n)
  • HTML: U+000A (т.е.)
  • Unix: U+000A (т.е. \n)
  • Макинтош: U+000D (т.е. \r)
  • zOS: U+0085 (т.е. \x85)
Другие вопросы по тегам