文字列処理

[C#] string.Formatで書式を指定する方法

今回は、C#のstring.Formatで書式を指定する方法についてご紹介します。

string.Formatとは

C#のstring.Formatメソッドは、中括弧 { } で示されるプレースホルダーに値を埋め込むことで、柔軟な文字列の整形を行うための機能です。

たとえば {0} のように記述すると、指定した値がその位置に置き換わります。

引数を複数渡す場合は、{0}, {1}, {2} のようにインデックスを増やすことで対応できます。

この方法を使うと、煩雑になりがちな文字列の連結処理を簡潔に記述できるため、可読性と保守性が向上します。

基本的な使い方

最も基本的な使い方は、string.Format(“書式文字列”, 値…) という構文です。

書式文字列内のプレースホルダーに、メソッドの引数で指定した値が順番に埋め込まれます。

プレースホルダーには インデックス整列(Alignment)フォーマット指定子 を指定することができます。

実行結果

名前: Alice, 年齢: 30

インデックスは 0 から始まり、指定した順番に従って引数が置き換えられます。

インデックスの誤りはエラー(FormatException)の原因となるため注意が必要です。

実用的な具体例

ここでは、数値や日付などの書式指定を組み合わせて使う例を紹介します。

数値のフォーマット

数値に対しては、C (通貨), D (10進数), N (カンマ区切り), F (固定小数点), P (パーセント), E (指数) などのフォーマット指定子を使うことができます。

指定子と桁数を組み合わせて、出力形式を柔軟にコントロールすることが可能です。

実行結果

通貨形式: ¥1,234.56
10進数(5桁): 00042
パーセント: 85.6 %
カンマ区切り: 1,234,567.89

日付・時刻のフォーマット

日付や時刻を整形する場合は、dD などの標準指定子と、yyyy/MM/dd などのカスタム指定子が用意されています。

目的に応じて柔軟に組み合わせ、見やすい出力を心がけます。

実行結果

短い日付形式: 2025/02/25
長い日付形式: 2025年2月25日(火)
カスタム形式: 2025/12/31

文字列の整列(Alignment)

プレースホルダーに指定する数値が正の場合は右寄せ、負の場合は左寄せとなります。

列を揃えたい場合やテーブル表示のレイアウトを整えたい場合に有効です。

実行結果

Fruit Count
Apple 5
Banana 12
Cherry 7

注意点

インデックスの整合性に注意する必要があります。

プレースホルダーに指定したインデックスと引数の順番や個数が合わない場合、FormatExceptionが発生する可能性があります。

また、整列の幅カルチャ依存の書式 (通貨や日付) にも気を配ることで、想定と異なる表示にならないように対策できます。

大量の文字列連結が必要な場面では、StringBuilderなど他の手段を検討することもあります。

まとめ

string.Formatは、プレースホルダーと書式指定子を活用することで、柔軟な文字列処理を可能にします。

数値や日付のフォーマットから、整列を利用したレイアウト調整まで、多様な使い方をサポートします。

注意点を踏まえながら、最適な形で利用してみてください。