フッターコンテンツにスキップ
.NETヘルプ

C# Multiline String (開発者向けの仕組み)

C#を始めるとき、文字列は最初に学ぶ概念の一つです。 もしHello, World!プログラムを作成したことがあるなら、既に文字列を扱ったことがあります。

C#に慣れてくると、プログラムはより複雑になります。 やがて、複数行にわたる文字列を扱うことになります。 現在その段階にいるのなら幸運です。このガイドでは、複数行文字列とは何か、そしてそれをどのように使用するかを説明します。 始めましょう。

複数行文字列とは何ですか?

複数行文字列はその名のとおり、通常の単一行の文字列とは対照的に、複数行にまたがる文字列です。 C#での複数行文字列は、ダブルクォートで囲まれた一連の文字、すなわち文字列リテラルを使用して作成されます。 複数行文字列を形成するためには、特殊なタイプの文字列リテラルである逐語的文字列リテラルを使用する必要があります。

逐語的文字列のマジック

C#で複数行文字列リテラルを作成するには、逐語的文字列を使用します。 逐語的文字列は@記号で始まり、エスケープシーケンスを使用せずに改行、特殊文字、さらには空白を含めることができます。

以下に逐語的文字列を使用した複数行文字列の例があります。

string str = @"This is a
multiline string
in C#.";
string str = @"This is a
multiline string
in C#.";
Dim str As String = "This is a
multiline string
in C#."
$vbLabelText   $csharpLabel

文字列strには三つの行が含まれ、各行は改行で区切られています。 逐語的文字列を作成するための@記号の使用に注意してください。

逐語的文字列での文字のエスケープ

逐語的文字列内にダブルクォートを含める必要がある場合があります。 これを行うには、二重のダブルクォートを使用する必要があります。 例えば:

string str = @"This is a
""multiline""
string in C#.";
string str = @"This is a
""multiline""
string in C#.";
Dim str As String = "This is a
""multiline""
string in C#."
$vbLabelText   $csharpLabel

この例では、逐語的文字列内で二重のダブルクォートを使用して、単語 "multiline" をダブルクォートで囲んでいます。

複数行文字列の連結

複数行文字列を他の文字列や値と組み合わせる必要があるかもしれません。 他の文字列値と複数行文字列を連結するには、単一行文字列と同様に+オペレーターを使用できます。

string name = "John";
string str = @"Hello, " + name + @",
Welcome to the
world of C# multiline strings!";
string name = "John";
string str = @"Hello, " + name + @",
Welcome to the
world of C# multiline strings!";
Dim name As String = "John"
Dim str As String = "Hello, " & name & ",
Welcome to the
world of C# multiline strings!"
$vbLabelText   $csharpLabel

ここでは、複数行文字列を単一行の文字列nameと連結しました。

複数行文字列の書式設定

複数行文字列を扱う際には、変数や式で書式設定することができます。 複数行文字列をフォーマットするために、文字列補間用の$記号を使用できます。

int age = 25;
string str = $@"Hello, I am {age} years old,
and I am learning
C# multiline strings!";
int age = 25;
string str = $@"Hello, I am {age} years old,
and I am learning
C# multiline strings!";
Dim age As Integer = 25
Dim str As String = $"Hello, I am {age} years old,
and I am learning
C# multiline strings!"
$vbLabelText   $csharpLabel

文字列補間を使用して、複数行文字列内にage変数の値を含めました。

複数行文字列を単一行文字列に変換する

場合によっては、複数行文字列を単一行文字列に変換する必要があります。 これを達成するために、Replaceメソッドを使用して改行をスペースや他の任意の文字に置き換えることができます。

string multilineString = @"This is a
multiline string
in C#.";

string singleLineString = multilineString.Replace(Environment.NewLine, " ");
string multilineString = @"This is a
multiline string
in C#.";

string singleLineString = multilineString.Replace(Environment.NewLine, " ");
Dim multilineString As String = "This is a
multiline string
in C#."

Dim singleLineString As String = multilineString.Replace(Environment.NewLine, " ")
$vbLabelText   $csharpLabel

複数行文字列の改行をスペースに置き換えて、単一行文字列にしました。

長い文字列の処理

時には非常に長い文字列がコード中で読みにくいことがあります。 コードをより読みやすくするために、長い文字列を+オペレーターを使用して複数行に分割することができます。

string longString = "This is a very long string that " +
                    "needs to be split across " +
                    "multiple lines for better readability.";
string longString = "This is a very long string that " +
                    "needs to be split across " +
                    "multiple lines for better readability.";
Dim longString As String = "This is a very long string that " & "needs to be split across " & "multiple lines for better readability."
$vbLabelText   $csharpLabel

長い単一行の文字列を三つの部分に分割し、+オペレーターを使用して連結することで、コードがより読みやすくなりました。

生文字列リテラルを使用した複数行文字列リテラルの作成

C# 10では、生文字列リテラルという新しい機能が導入されました。 これにより、@記号を使用せずに複数行文字列リテラルを作成することができます。 生文字列リテラルを作成するには、文字列をトリプルクォート(""")で囲みます。 生文字列リテラルは、トリプルクォート内の改行を含むすべての文字を保持します。 例えば:

string str = """This is a
multiline string
using raw string literals in C# 10.""";
string str = """This is a
multiline string
using raw string literals in C# 10.""";
Dim str As String = """This is a multiline string using raw string literals in C# 10."""
$vbLabelText   $csharpLabel

生文字列リテラルを使用して複数行文字列を作成しました。 文字列を囲むためのトリプルクォートの使用に注意してください。

生文字列リテラルでの文字のエスケープ

逐語的文字列と同様に、生文字列リテラル内にダブルクォートを含める必要があるかもしれません。 これを行うには、二重のダブルクォートを使用することができます。 例えば:

string str = """This is a
""multiline""
string using raw string literals in C# 10.""";
string str = """This is a
""multiline""
string using raw string literals in C# 10.""";
Dim str As String = """This is a ""multiline"" string using raw string literals in C# 10."""
$vbLabelText   $csharpLabel

二重のダブルクォートを使用して、生文字列リテラル内にダブルクォートを含めました。

逐語的文字列と生文字列リテラルの組み合わせ

場合によっては、逐語的文字列と生文字列リテラルの両方の機能を組み合わせたい場合があります。 これは、@記号の後にトリプルクォートを続けることで行うことができます。

string str = @"""This is a
multiline string
using both verbatim and raw string literals in C# 10.""";
string str = @"""This is a
multiline string
using both verbatim and raw string literals in C# 10.""";
Dim str As String = """This is a
multiline string
using both verbatim and raw string literals in C# 10."""
$vbLabelText   $csharpLabel

この例では、逐語的文字列と生文字列リテラルの両方を使用して複数行文字列を作成しました。 @記号の後に続くトリプルクォートの使用に注意してください。

IronPDFで複数行文字列を使用したPDFの生成

IronPDFは、特にWeb開発者を念頭に置いて設計された軽量.NET PDFライブラリです。 PDFファイルの読み取り、書き込み、操作が簡単になり、さまざまなファイルタイプをPDFコンテンツに変換することができます。.NETプロジェクトで、デスクトップとWebの両方で使用できます。 最良の部分は、開発環境で無料で試せることです。

IronPDFでHTML複数行文字列を利用してPDFファイルを作成する方法は次のとおりです。

string name = "John";
string age = "25";
string content = $@"<!DOCTYPE html>
<html>
<body>
<h1>Hello, {name}!</h1>
<p>You are {age} years old.</p>
<p>This is a
multiline string
used to generate a PDF
with IronPDF and dynamic content.</p>
</body>
</html>";

// Create a new PDF document using IronPDF
var pdfDocument = new IronPdf.ChromePdfRenderer();
pdfDocument.RenderHtmlAsPdf(content).SaveAs("c://BioData.pdf");
string name = "John";
string age = "25";
string content = $@"<!DOCTYPE html>
<html>
<body>
<h1>Hello, {name}!</h1>
<p>You are {age} years old.</p>
<p>This is a
multiline string
used to generate a PDF
with IronPDF and dynamic content.</p>
</body>
</html>";

// Create a new PDF document using IronPDF
var pdfDocument = new IronPdf.ChromePdfRenderer();
pdfDocument.RenderHtmlAsPdf(content).SaveAs("c://BioData.pdf");
Dim name As String = "John"
Dim age As String = "25"
Dim content As String = $"<!DOCTYPE html>
<html>
<body>
<h1>Hello, {name}!</h1>
<p>You are {age} years old.</p>
<p>This is a
multiline string
used to generate a PDF
with IronPDF and dynamic content.</p>
</body>
</html>"

' Create a new PDF document using IronPDF
Dim pdfDocument = New IronPdf.ChromePdfRenderer()
pdfDocument.RenderHtmlAsPdf(content).SaveAs("c://BioData.pdf")
$vbLabelText   $csharpLabel

この例では、文字列補間を使用して、nameおよびage変数を複数行文字列に含め、PDFコンテンツを動的かつカスタマイズ可能にしました。 PDFに必要なコンテンツで複数行文字列を作成しました。 次に、IronPDF名前空間からChromePdfRendererクラスをインスタンス化し、RenderHtmlAsPdfメソッドを使用して、複数行文字列コンテンツをPDFドキュメントに変換しました。 最後に、PDFドキュメントを "BioData.pdf" というファイルに保存しました。

結論

そして、複数行文字列の多様な世界の駆け足のツアーが完了します。 今やあなたは複数行文字列を使用するC#のプロであり、IronPDFを用いた上記の例のようにプロジェクトで活用し始められます。

IronPDFを試してみたいですか? IronPDFの30日間無料トライアルから始められます。 また、この開発目的で使用するのは完全に無料なので、その性能を十分に確認することができます。 また、確認後に気に入ったなら$799からIronPDFライセンスを取得できます。 さらに大きな節約のためには、Iron Suiteパッケージを確認してください。これは、9つのIron Softwareツールが2つの価格で手に入るパッケージです。 コーディングを楽しんでください!

Csharp Multiline String 2 related to 結論

よくある質問

C# でマルチライン文字列をどのように作成できますか?

C# では、文字列の前に '@' シンボルを付けることにより、逐語的文字列リテラルを使用してマルチライン文字列を作成できます。これにより、文字列内に改行や特殊文字を直接含めることができます。

C# で逐語的文字列リテラルを使用する目的は何ですか?

C# の逐語的文字列リテラルは、エスケープシーケンスを使用せずに改行や特殊文字を保持する文字列を作成するために使用されます。 '@' 記号で示され、多行文字列を書くのに最適です。

逐語的文字列でダブルクォートなどの特殊文字をどのように扱いますか?

逐語的文字列では、ダブルダブルクォートを使用してダブルクォートを含めることができます。例えば、'@"これは ""多行"" 文字列です。"' は、文字列内にダブルクォートを含めることができます。

C# 10 の生の文字列リテラルとは何で、それはどのように動作しますか?

C# 10 で導入された生の文字列リテラルは '@' シンボルを使用せずにマルチライン文字列を作成することを可能にします。それらはトリプルクォートで囲まれ、改行を含むすべての文字をそのまま保持します。

PDF生成でマルチライン文字列をどのように使用できますか?

マルチライン文字列はHTML形式で動的コンテンツを作成するのに使用でき、それを HTML から PDF への変換をサポートする IronPDF などのライブラリを用いて PDF ドキュメントに変換できます。

文字列補間とは何で、それはマルチライン文字列にどのように適用されますか?

C# の文字列補間では、'$' 記号を使用して文字列内に変数や式を埋め込むことができます。これは、動的コンテンツをシームレスに含めるためにマルチライン文字列と共に利用できます。

C# でマルチライン文字列を一行文字列に変換するにはどうすればいいですか?

マルチライン文字列を一行文字列に変換するには、Replace メソッドを使用して、改行をスペースや他の文字に置き換えます。例えば、multilineString.Replace(Environment.NewLine, " ") です。

.NET アプリケーションで PDF を生成するためにライブラリを使用するべき理由は何ですか?

.NET の PDF 生成用に設計されたライブラリ、例えば IronPDF は、PDF の読み取り、書き込み、操作のプロセスを簡略化します。それらは様々なファイルタイプを PDF に変換することをサポートし、デスクトップおよび Web アプリケーションのための強力なツールセットを提供します。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。