📝

[C#] 文字列の書式設定を行う方法

2022/10/13に公開

C#で数値を右揃えで表示したり、特定の桁数で表示したりするなどの書式設定を行う方法として、stringFormatメソッドを使う方法と、文字列補間$"{}"を使う方法があります。

文字列補間$"{}"の方がパフォーマンスが良く、コードの可読性も良いです。またstring.Formatメソッドは実行時エラーとして検出されますが、文字列補間はコンパイルエラーとして検出することができます。

string.Formatメソッド

構文

{index[,alignment][:formatString]}
  • index

パラメータ指定子といい、オブジェクトのリスト内の何番目の要素を補間するかを指定します。

  • alignment

表示桁数や左揃え、右揃えの設定を行います。
alignmentが正の場合は右揃え、負の場合は左揃えです。
alignmentの値が書式設定する文字列の長さよりも小さい場合は無視されます。

  • formatString

書式指定を行います。
例えば、書式設定されるオブジェクトが数値の場合、dを指定すると10進数表示、xを指定すると16進数表示となります。
他にも日付や時刻の書式設定なども行うことができます。(標準の日時書式指定文字列カスタム日時形式文字列

indexの例:

Console.WriteLine(string.Format("{0}, {1}"), 123, 456);

出力:

123, 456

alignmentの例:

Console.WriteLine(string.Format("{0, 5}"), 123);

出力:

  123

stringFormatの例:

Console.WriteLine(string.Format("{0:x}"), 123);

出力:

7b

文字列補間$"{}"

string.Formatと構文は同じで、文字列の前に$を付けるだけです。

先ほどの例を文字列補間で記述すると以下のようになります。

Console.WriteLine($"{123}, {456}");
Console.WriteLine($"{123, 5}");
Console.WriteLine($"{123:x}");

出力:

123, 456
  123
  7b

補足

上記の例では、直接数値を表示させていますが、もちろん変数を表示させることもできます。

int num=123;
Console.WriteLine($"{num}");

参考

Discussion