C#の文字列フォーマット方法!String.Format・補間文字列の使い方
生徒
「C#で文章の中に変数の値を入れたいときはどうすればいいですか?」
先生
「その場合は、文字列のフォーマット方法を使います。C#にはString.Formatや補間文字列($マークを使う方法)があります。」
生徒
「へえ!文字列フォーマットって便利そうですね。具体的にどんな風に使うんですか?」
先生
「それでは、基本から順番に見ていきましょう!」
1. 文字列フォーマットとは?
C#の文字列フォーマットとは、文字列の中に変数や数値、日付などを埋め込む方法のことです。プログラムでは「おはよう〇〇さん」や「今日の日付は〇〇です」といったように、状況によって変わる内容を文章の中に入れたいことがよくあります。
文字列フォーマットを使うと、あらかじめ文章の「ひな形」を用意しておき、そこに変数の値を差し込むことができます。これによって、コードが見やすく整理され、修正もしやすくなります。
2. String.Formatの使い方
String.Formatは、C#で昔から使われている文字列フォーマットの方法です。文章の中に{0}や{1}といった番号を置き、その位置に変数を差し込みます。
string name = "太郎";
int age = 20;
string message = String.Format("私の名前は{0}です。年齢は{1}歳です。", name, age);
Console.WriteLine(message);
このコードを実行すると、次のように出力されます。
私の名前は太郎です。年齢は20歳です。
{0}には最初の変数nameが入り、{1}には2つ目の変数ageが入ります。このように数字で順番を指定する仕組みです。
3. 補間文字列($マーク)の使い方
C# 6.0から追加された補間文字列は、より直感的でわかりやすい書き方です。文字列の前に$をつけ、文章の中に直接{変数名}を書くだけで使えます。
string name = "花子";
int age = 18;
string message = $"私の名前は{name}です。年齢は{age}歳です。";
Console.WriteLine(message);
実行結果は次のとおりです。
私の名前は花子です。年齢は18歳です。
補間文字列を使うと、変数の名前がそのまま見えるので、プログラムの可読性(読みやすさ)が大幅に上がります。初心者にとっても理解しやすい書き方です。
4. 数値や日付のフォーマット
文字列フォーマットでは、単に変数を埋め込むだけでなく、数値の表示形式や日付の書き方を整えることもできます。
4-1. 数値のフォーマット
例えば金額をカンマ区切りにしたい場合、次のように書きます。
int price = 1234567;
string message = String.Format("商品の価格は{0:N0}円です。", price);
Console.WriteLine(message);
商品の価格は1,234,567円です。
{0:N0}のN0は「カンマ区切りで小数点以下0桁」という意味です。
4-2. 日付のフォーマット
日付も指定した形式で表示できます。
DateTime today = DateTime.Now;
string message = String.Format("今日は{0:yyyy年MM月dd日}です。", today);
Console.WriteLine(message);
今日は2025年10月02日です。
yyyyは西暦、MMは月、ddは日を表します。補間文字列でも同様に書けます。
5. String.Formatと補間文字列の違い
最後に、String.Formatと補間文字列の違いを整理しておきましょう。
- String.Format:昔からある方法。
{0}や{1}を使って順番を指定する。 - 補間文字列:C# 6.0以降で使える新しい書き方。変数名をそのまま書けるので読みやすい。
現代のC#プログラミングでは、補間文字列を使うのが一般的です。ただし、古いコードや教材ではString.Formatが使われていることもあるので、両方の書き方を知っておくと安心です。
まとめ
C#の文字列フォーマットは、日常的に登場する非常に重要なスキルです。変数や数値、日付などを文章の中に自然な形で埋め込むことで、ユーザーに分かりやすい出力を作成できます。今回学んだString.Formatと補間文字列($を使う書き方)は、それぞれにメリットがありますが、最近では可読性の高い補間文字列の方が主流となっています。
例えば「こんにちは〇〇さん、今日の日付は〇〇です」といった挨拶文を作るときも、文字列フォーマットを使えば簡単に変数を埋め込んで動的に文章を生成できます。これはユーザーインターフェースだけでなく、ログ出力やデバッグ、メッセージ生成など様々な場面で役立ちます。
また、金額をカンマ区切りで見やすく表示するフォーマットや、日付を「年-月-日」の形で表示するなど、フォーマット指定子を使えば出力の見た目も整えることができます。特にビジネス系のアプリケーション開発では、ユーザーにとって読みやすい表示をすることが求められるため、数値や日付のフォーマット知識は非常に重要です。
ここで、実際のサンプルをもう一度整理しておきましょう。
文字列フォーマットの基本例
string name = "田中";
int age = 30;
string message1 = String.Format("私は{0}です。年齢は{1}歳です。", name, age);
string message2 = $"私は{name}です。年齢は{age}歳です。";
Console.WriteLine(message1);
Console.WriteLine(message2);
数値フォーマット(カンマ区切り)
int price = 9876543;
string result = String.Format("価格は{0:N0}円です。", price);
Console.WriteLine(result);
日付フォーマット(yyyy年MM月dd日)
DateTime now = DateTime.Now;
string date = $"本日の日付は{now:yyyy年MM月dd日}です。";
Console.WriteLine(date);
このように、String.Formatや補間文字列を使えば、C#で変数を含む柔軟な文章生成が簡単にできるようになります。特にC# 6.0以降の補間文字列は変数名がそのまま見えるため、コードの見通しがよくなり、デバッグや保守もしやすくなります。
もちろん、どちらの方法を使うかはプロジェクトのルールや開発スタイルによって異なります。古いライブラリや既存のコードベースではString.Formatが使われていることも多いため、両方の書き方を覚えておくと安心です。
実際の開発現場では、ユーザー名や数値、日付などを含んだ表示を毎日のように扱うことになります。文字列フォーマットを正しく使いこなせることは、C#プログラマーとしての基本的な実力を示す指標のひとつです。今回の学習を通じて、文字列処理の理解が深まったはずです。
最後に、フォーマット文字列では:N0や:yyyy年MM月dd日のようなフォーマット指定子を使うことができ、出力の見た目を細かく制御できる点も非常に便利です。このような柔軟な指定ができる点が、C#の文字列フォーマット機能の強みでもあります。
今後は、エラーメッセージや通知メッセージ、ログファイルなどにも文字列フォーマットを活用しながら、より実践的なコードを身につけていきましょう。
生徒
「先生、C#のString.Formatと補間文字列の違いがようやく分かりました!補間文字列の方が読みやすくて使いやすいですね。」
先生
「そうですね。補間文字列はC# 6.0以降の書き方ですが、今の開発では主流です。可読性の高さが魅力ですね。」
生徒
「日付のフォーマットや金額のカンマ区切りも面白かったです。{0:N0}とか{0:yyyy年MM月dd日}の書き方も覚えました!」
先生
「よくできました!フォーマット指定子を覚えると、出力の見た目を綺麗に整えられるので実務でも重宝しますよ。」
生徒
「古いコードでString.Formatが使われている理由も納得です。ちゃんと両方の書き方に慣れておこうと思います。」
先生
「その心がけは大事です。今後はログ出力やエラー通知など、色々な場面で応用してみましょう。」
生徒
「はい!変数を含んだ文章もスッキリ書けるようになったので、もっと活用していきたいです!」