件名ごとに...
\n
はUnix、\r
はMac、\r\n
はWindowsです。
クロスプラットフォームでコードを実行する場合は特に問題が生じることがあります。 Environment.NewLine
を使用してこれをバイパスできます。
詳細については、 \ r、\ n、および\ r\nの違いは何ですか?! を参照してください。幸せな読書
違い
改行を示すことができる文字がいくつかあります。通常は次の2つです。
* '\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
改行は、2つの文字の組み合わせ、つまり '\ r\n'(または13の後に10)であると想定しています。
* Unix (and hence Linux as well)
Unixは、単一の「\ n」を使用して改行を示します。
* Mac
Macは単一の'\r'
を使用します。
ここ から取得
「\ n」は単なる改行(Unicode U + 000A)です。これは通常、Unix行区切り文字です。
「\ r\n」は、キャリッジリターン(Unicode U + 000D)とそれに続く改行(Unicode U + 000A)です。これは通常、Windowsの行区切り文字です。
基本的にはWindows標準になります:\ r\nおよびUnixベースのシステム:\ n
\ 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がUnixで.NETアプリケーションを実行するためにVMを作成すると、問題が発生します。したがって、改行文字が必要な場合は、常にEnvironment.NewLineを使用する必要があります。ここで、オペレーティングシステムを気にする必要はありません。
オペレーティングシステムが回線の終端を認識する方法についてです。
士気:Windows用に開発している場合は、\ r\nに固執します。または、C#文字列関数を使用して、既に行末(WriteLineなど)を考慮している文字列を処理することもできます。
\ nはUnix(-like)システムで使用される改行です。\ r\nはWindowsで使用されます。これはC#とは関係ありません。
それらはただ\r\n and \n
はバリアントです。
\r\n
はWindowsで使用されます
\n
はMacおよびLinuxで使用されます