В чем разница между \ n и \ r \ n? - PullRequest
17 голосов
/ 29 сентября 2010

Они оба означают «новая строка», но когда одна используется поверх другой?

Ответы [ 8 ]

28 голосов
/ 29 сентября 2010

\r\n является Windows Стиль

\n является POSIX Стиль

\r является старым Mac OS до OS X, * * Современный стиль Mac с использованием POSIX Style.


\r - возврат каретки, а \n -перевод строки, на старых компьютерах , где нет монитора, есть только принтер для вывода результатов программы пользователю, если вы хотите получать печать с начала новой строки слева, вы должны получить \n для перевод строки и \r для получения возврат каретки в крайнее левое положение, это из синтаксиса старых компьютеров, сохраненного к этому времени на Windows платформе.

3 голосов
/ 29 сентября 2010

\ n означает новую строку.Это означает, что курсор должен перейти на следующую строку.

\ r означает возврат каретки.Это означает, что курсор должен вернуться к началу строки.

Для программ Unix и Unix обычно требуется только новая строка (\ n).

Windows и Windows программы обычно нуждаются в обоих.

3 голосов
/ 29 сентября 2010

\ n - только новая строка, \ r \ n - новая строка и возврат каретки (т. Е. Переместите курсор влево).

1 голос
/ 29 сентября 2010

Так выглядит новая строка в операционных системах Windows (\ r \ n) и linux (\ n)

В Unix \ r - это возврат каретки (CR) и \ na перевод строки(LF), которые вместе оказываются идентификатором новой строки Windows, и вы заменяете их идентификатором новой строки Unix.

В Windows \ r также является CR, но \ n является комбинацией CRи LF.Таким образом, вы пытаетесь заменить CR + CR + LF на CR + LF.Не имеет особого смысла, не так ли.

Из "perldoc perlop": Все системы используют виртуальный "" \ n "" для представления ограничителя строки, называемого «новой строкой».Нет такой вещи как неизменный, физический символ новой строки.Это всего лишь иллюзия того, что операционная система, драйверы устройств, библиотеки C и Perl все хотят сохранить.Не все системы читают "" \ r "" как ASCII CR и "" \ n "" как ASCII LF.Например, на Mac они поменялись местами, а в системах без ограничителя строки печать "\ n" "может не давать никаких фактических данных.В общем, используйте "" \ n "", когда вы подразумеваете "новую строку" для вашей системы, но используйте буквенный ASCII, когда вам нужен точный символ.Например, большинство сетевых протоколов ожидают и предпочитают CR + LF ("" \ 015 \ 012 "" или "" \ cM \ cJ "") для ограничителей строки, и хотя они часто принимают только "" \ 012 "", ониредко терпеть просто "" \ 015 "".Если вы привыкли использовать "" \ n "" для работы в сети, возможно, однажды вас обожгут.

1 голос
/ 29 сентября 2010

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

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

Unix (и, следовательно, Linux)

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

Mac

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

так что это вызывает проблемы, когда вы переносите ваше приложение с windows на mac, когда вы используете путь к папке и т. П.

1 голос
/ 29 сентября 2010

'\ n' является значением по умолчанию в Unix, '\ r \ n' является значением по умолчанию в Windows.

0 голосов
/ 29 сентября 2010

В C # вы можете просто использовать Environment.NewLine

0 голосов
/ 29 сентября 2010

Разница между разными операционными системами: в Windows символ новой строки - \r\n, а в Linux - \n В Mac OSX - \r, на самом деле это просто вопрос того, что сделали разработчики ОС.это будет

...