C#の改行コードとは?改行コードの使い方をご紹介!

- システム
エンジニア - C#の改行コードはどのように行えばよいのでしょうか?
- プロジェクト
マネージャー - この記事では、OS環境ごとの改行コードや挿入・置換についてご紹介していきます。
C#の改行コードについて
今回は、C#の改行コードについて紹介します。
WindowsやLinuxなどの各OS環境では、改行を表す制御文字である改行コードが異なります。OSの差異を意識しないアプリケーションを作るにはどうすればよいでしょうか。また、C#の改行コードにはどのような違いがあるのでしょうか。
C#の改行コードに興味のある方はぜひご覧ください。
OS環境ごとの改行コード
Windowsの改行コードは「CR(キャリッジ・リターン)+LF(ライン・フィールド)」であるのに対し、Linuxの改行コードは「LF」のみです。
この「CR」と「LF」はC#では以下のように記述します。
・CR:”\r”
・LF:”\n”
・CR+LF:”\r\n”
OSの差異を意識せずに改行コードを利用するには、Environmentクラスの静的プロパティであるNewLineプロパティを利用します。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
|
// 改行コード
string newLine = Environment.NewLine;
// 改行コードの比較
Console.WriteLine(newLine.Equals("\r\n"));
Console.WriteLine(newLine.Equals("\r"));
Console.WriteLine(newLine.Equals("\n"));
|
Windows環境では、実行結果は以下のようになります。
1
2
3
|
True
False
False
|
Windowsの改行コードは「CR+LF」なので、”\r\n”と一致することが分かります。
Linux環境で同じソースコードを実行すると、改行コードは「LF」なので、Environment.NewLineは”\n”となります。
このように、OSの差異を意識せずに改行コードを利用するには、Environmentクラスの静的プロパティであるNewLineプロパティを利用します。
改行コードの挿入
C#で文字列の中に改行コードを挿入するには、以下のようにします。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
// 改行コードを挿入
string str1 = "1行目" + Environment.NewLine + "2行目";
string str2 = "1行目\n2行目";
string str3 = "1行目\r2行目";
string str4 = "1行目\r\n2行目";
string str5 = @"1行目
2行目";
string str6 = "1行目\\n1行目の続き";
// 結果出力
Console.WriteLine(str1);
Console.WriteLine(str2);
Console.WriteLine(str3);
Console.WriteLine(str4);
Console.WriteLine(str5);
Console.WriteLine(str6);
|
Windows環境では、実行結果は以下のようになります。
1
2
3
4
5
6
7
8
9
10
|
1行目
2行目
1行目
2行目
2行目
1行目
2行目
1行目
2行目
1行目\n1行目の続き
|
Environment.NewLine で改行コードを挿入できます。また、”\n”や”\r\n”で改行コードを挿入することもできます。
“@”を使用すれば、ソースコード上で改行すると、そのまま改行コードが挿入されますが、ソースコードが汚くなるでしょう。改行コードではなく”\n”などの文字列を挿入する場合は、”\”を付与してエスケープします。
このようにして、文字列の中に改行コードを挿入します。
改行コードの置換
C#でReplaceを使用することで、改行コードを削除したり、置換したりできます。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
string org = "1行目" + Environment.NewLine + "2行目";
// 改行コードを置換(削除)
string str1 = org.Replace("\r", "").Replace("\n", "");
string str2 = org.Replace(Environment.NewLine, "");
// Linuxの改行コードに置換
string str3 = org.Replace("\r", "");
string str4 = org.Replace(Environment.NewLine, "\n");
// 結果出力
Console.WriteLine(str1);
Console.WriteLine(str2);
Console.WriteLine(str3);
Console.WriteLine(str4);
|
Windows環境では、実行結果は以下のようになります。
1
2
3
4
5
6
|
1行目2行目
1行目2行目
1行目
2行目
1行目
2行目
|
Environment.NewLineで挿入した改行コードを、Replaceで置換することで削除できます。”\r”を””に置換し、さらに”\n”, “”に置換することで、どのような改行コードであっても、削除できます。OSの差異を意識せずに改行コードの削除が可能です。
また、Windowsの改行コードをLinuxの改行コードに置換することもできます。このように、Replaceを使用して改行コードを削除したり、置換したりできます。
改行コードの判定
C#でContainsメソッドを使用することで、文字列に改行コードが含まれているか否か判定できます。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
|
string org = "1行目" + Environment.NewLine + "2行目";
// 結果出力
Console.WriteLine(org.Contains(Environment.NewLine)); // True
Console.WriteLine(org.Contains("\r")); // True
Console.WriteLine(org.Contains("\n")); // True
Console.WriteLine(org.Contains("\r\n")); // True
|
Windows環境では、実行結果は以下のようになります。
1
2
3
4
|
True
True
True
True
|
Windows環境での改行コードは「CR+LF(“\r\n”)」なので、判定結果はすべてTrueになります。このように、Containsメソッドで、文字列に改行コードが含まれているか否か判定できます。
改行コードで分割
改行コードを含む文字列について、C#でSplitメソッドを使用することで、改行コードで分割できます。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
// 全種類の改行コードを含めた文字列
string org = "1行目" + Environment.NewLine + "2行目\n3行目\r4行目\r\n5行目";
// "\r\n"を"\n"に置換し、"\n"または"\r"でsplitする
var lists = org.Replace("\r\n", "\n").Split(new[] { '\n', '\r' });
// 繰り返し処理でlistsの要素を出力する
foreach (string list in lists)
{
Console.WriteLine(list);
}
|
Windows環境では、実行結果は以下のようになります。
1
2
3
4
5
|
1行目
2行目
3行目
4行目
5行目
|
どの改行コードでも分割できるように、Replaceメソッドで”\r\n”を”\n”に置換し、”\n”または”\r”で分割しています。こうすることで、たとえLinuxの文字コードであっても正常分割できます。OSの差異を意識することないソースコードになります。
このように、改行コードを含む文字列について、Splitメソッドを使用して改行コードで分割できます。
- システム
エンジニア - 改造コードと言っても、色々あるのですね。
- プロジェクト
マネージャー - OSの環境によってコードが違ってきますが、身に付けておくことでアプリを作ることが出来るようになります。
C#の改行コードを理解しよう
WindowsやLinuxなどの各OS環境では、改行コードが異なります。C#の改行コードの差異を理解すると、OSの差異を意識しないアプリケーションが作れるようになるでしょう。
ぜひご自身でC#のソースコードを書いて、理解を深めてください。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


C#新着案件New Job
-
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(新宿駅) -
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(新宿駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円神奈川県横浜市(桜木町駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円神奈川県横浜市(桜木町駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(西新宿駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(西新宿駅)