ToStringメソッドでの書式指定


C#などで数字を文字列に変える場合にToString()メソッドをよく使いますが、引数をいれることにより書式を指定することができます。
下に書式の指定の方法とその例を紹介します。

1.0 標準書式

指定子 種類 説明 使用例 ()内の数字を変換
"c"または"C" 通貨型 数字は小数のけた数
けた数より下は四捨五入
例1 (12345).ToString("c") --> ¥12,345
例2 (1234.567).ToString("C1") --> ¥1,234.6
"d"または"D" 整数型 整数のみ対応可
数字はけた数
例1 (123).ToString("d5") --> 00123
例2 (-12).ToString("D4") --> -0012
"e"または"E" 指数型 指定子の小文字、大文字で指数部"e"または"E"
を指定可
数字は小数部のけた数(なければ6けた)
例1 (123.56).ToString("e") --> 1.2356e+002
例2 (-0.1256).ToString("E2") --> -1.26E-001
"f"または"F" 小数型 数字は小数のけた数
けた数より下は四捨五入
指定なければ小数2けた
例1 (123.45678).ToString("f") --> 123.46
例2 (0.1).ToString("F4") --> 0.1000

その他G(有効けた数)、N(区切り)、P(パーセント)、X(16進数)などいろいろあります。

2.0 カスタム書式

指定子 種類 説明 使用例 ()内の数字を変換
"0" ゼロ型 対応するけたを0でうめる
数字がないところは0
例1 (123).ToString("00000") --> 00123
例2 (123.456).ToString("00.00") --> 123.46
"#" けた型 対応するけたを#でうめる
数字がないところは表示されない
例1 (123).ToString("#####") --> 123
例2 (0.456).ToString("##.##") --> .46
"," 区切り 0または#の間に,がある時はカンマで区切りをする 例1 (123456789).ToString("#,0") --> 123,456,789
その他 [ ] や : など記号、文字はそのまま表示 例1 (123456).ToString("[##:##:##]") --> [12:34:56]
例2 (123.456).ToString("##.##円") -->123.46円

3.0 空白埋め、0埋め、指定文字埋め

PadLeft()、PadRight()関数を使えば左から(右から)指定で文字埋めができます。これを使えば空白埋めや0埋めができます。
PadLeft()、PadRight()は、第一引数はけた数、第二引数はCharで代替文字を設定できます。
例 value.ToString().PadLeft(5, '#')

ポイント
第二引数(代替文字)はCharとなりますので""(ダブルクオート)ではなく''(シングルクオート)で囲みます。

4.0 スクリプト

test.cs
    int i = 0; // int型数値代入用(初期値は0としている)
    float f = 0f; // float型数値代入用(初期値は0としている)

    // 通貨型
    i = 12345;
    Debug.Log(i.ToString("c")); // ¥12,345
    f = 1234.567f;
    Debug.Log(f.ToString("C1")); // ¥1,234.6

    // 整数型
    i = 123;
    Debug.Log(i.ToString("d5")); // 00123
    i = -12;
    Debug.Log(i.ToString("D4")); // -0012

    // 指数型
    f = 123.56f;
    Debug.Log(f.ToString("e")); // 1.235600e+002
    f = -0.1256f;
    Debug.Log(f.ToString("E2")); // -1.26E-001

    // 小数型
    f = 123.45678f;
    Debug.Log(f.ToString("f")); // 123.46
    f = 0.1f;
    Debug.Log(f.ToString("F4")); // 0.1000

    // ゼロ型
    i = 123;
    Debug.Log(i.ToString("00000")); // 00123
    f = 123.456f;
    Debug.Log(f.ToString("00.00")); // 123.46

    // けた型
    i = 123;
    Debug.Log(i.ToString("#####")); // 123
    f = 0.456f;
    Debug.Log(f.ToString("##.##")); // .46

    // 区切り
    i = 123456789;
    Debug.Log(i.ToString("#,0")); // 123,456,789

    // その他
    i = 123456;
    Debug.Log(i.ToString("[##:##:##]")); // [12:34:56]
    f = 123.456f;
    Debug.Log(f.ToString("##.##円")); // 123.46円

  // 指定文字埋め
    int i = 123;
    Debug.Log(i.ToString().PadLeft(5, '#')); // ##123
    Debug.Log(i.ToString().PadLeft(5, ' ')); //   123 (123の前に2つの空白)
    Debug.Log(i.ToString().PadRight(5, '*'));// 123**