HOWTO · Csharp
C# で文字列に改行を追加する
C#の文字列に改行を追加する3つの方法を紹介します。`\n`、`Environment.NewLine`、既存テキスト内の特定の目印を置換する方法を解説します。
このページの内容
C#の文字列に改行を入れるには、改行文字(LF)のエスケープシーケンス \n を含める方法、現在の .NET 環境に対応する Environment.NewLine を使う方法、既存のテキストにある特定の目印を置換する方法があります。テキストの用途に合った改行シーケンスを選んでください。ファイル形式やネットワークプロトコルで特定のシーケンスが必要な場合もあります。
\nを使ってC#の文字列に改行を入れる
\n エスケープシーケンスは、ラインフィード(LF)文字を表します。文字列リテラルで次の行を始めたい位置に入れてください。これは文字そのものを表し、オペレーティングシステムに応じて改行形式を選ぶものではありません。\r エスケープシーケンスは、キャリッジリターン(CR)文字を表します。データ形式でCRが指定されている場合や、その形式で両方の文字が指定されている場合にCR/LFの組み合わせを使います。
次の例を実行します。
このセクションのコードと表示されるラベルや出力は英語のままです。
using System;
class Program
{
static void Main()
{
string message = "First line.\nSecond line.";
Console.WriteLine(message);
}
}
First line.
Second line.
文字列を自分で制御でき、明示的にLFを入れたい場合に便利です。文字列を読み取るシステムが別の改行形式を必要とする場合は、そのシステムが指定するシーケンスを使ってください。
プラットフォームに応じた改行にはEnvironment.NewLineを使う
Environment.NewLine は、現在の .NET 環境で使われる改行シーケンスを返します。その環境向けのテキストファイルなどを作成するときに使えます。ただし、無関係なファイル形式やプロトコルの要件を判定するものではありません。そうした要件でLFまたはCR/LFが指定されている場合は、現在の環境の規則と異なっていても、指定されたシーケンスを直接使ってください。詳しくは、MicrosoftのEnvironment.NewLineのドキュメントを参照してください。
このセクションのコードと表示されるラベルや出力は英語のままです。
using System;
class Program
{
static void Main()
{
string message = "First line." + Environment.NewLine + "Second line.";
Console.WriteLine(message);
}
}
First line.
Second line.
Console.WriteLine も出力の末尾に改行を追加します。文字列に埋め込まれたシーケンスは message の2つの部分を区切り、最後の改行は出力メソッドによって追加されます。
文字列を作成した後に改行を入れる
C#の文字列は変更できないため、テキストを変更すると新しい文字列が作られます。String.Replace() はその新しい値を返すので、変更を保持するには変数に再代入してください。指定した目印が現れるたびに置換するため、入力にある各 <break> が改行になります。任意の文章では句読点をそのまま残す必要がある場合があるため、すべてのピリオドを置換するより、特定の目印を置換するほうが安全です。このメソッドについては、既存のMicrosoft String.Replace()のドキュメントで説明されています。
このセクションのコードと表示されるラベルや出力は英語のままです。
using System;
class Program
{
static void Main()
{
string message = "First line.<break>Second line.";
message = message.Replace("<break>", "\n");
Console.WriteLine(message);
}
}
First line.
Second line.
この用途のために予約され、通常のテキストには現れない目印を使ってください。現在の環境に合わせた改行に置き換える場合は、\n ではなく Environment.NewLine を使います。自分でテキストを組み立てる場合は、後から編集するより、最初の文字列に必要な改行を入れておくほうが簡単です。
3つの方法をまとめると、文字列リテラルにLFを入れる、現在の環境の改行シーケンスを使う、既存テキスト内の予約済みの目印を置換する、という選択肢があります。より厳密な改行要件は出力先の形式やプロトコルによって決まるため、プラットフォームと形式の対応表はここでは扱いません。