C# - 文字列の先頭をゼロで埋める(ゼロパディング)

文字列をゼロ埋めして桁数を揃えるには、`PadLeft()`メソッドを使用します。

文字列をゼロパディングする方法

string <ゼロパディング結果> = <対象文字列>.PadLeft(<桁数>, '0');

解説

PadLeft() は stringクラスのメソッドです。 文字列の左側(先頭)に指定した文字を追加することで、文字列の長さを指定した文字数に揃えます。このメソッドは、以下の2つのパラメータを取ります。
  1. `totalWidth`(必須) : 返される文字列の全体の長さを指定します。もし、この値が元の文字列の長さよりも小さい場合、元の文字列がそのまま返されます。
  2. `paddingChar`(オプション) : 埋めるために使用する文字を指定します。このパラメータが省略された場合、空白文字が使用されます。

サンプルコード

次のサンプルコードは 文字列 "123" を 10桁 で ゼロパディングします。
string before = "123";

// 10桁で前ゼロ埋め
string after = before.PadLeft(10, '0');

// 結果 = "0000000123"
Console.WriteLine(after);

// 結果 = "123"(元の文字列はそのまま)
Console.WriteLine(before);

符号を含む場合

文字列中に プラス や マイナスの符号 が含まれていると、次のように符号の位置がずれてしまいます。 符号に対応するには 文字列中に 符号が含まれているかを確認し、ゼロ埋め後に 符号を戻す などの対応が必要です。
// 結果 = "0+123"
"+123".PadLeft(5, '0');

// 結果 = "0-123"
"-123".PadLeft(5, '0');

サンプルコード

次のサンプルコードは、符号に対応した ゼロパディング関数の一例です。引数に 文字列 と 桁数 を渡すと、ゼロパディングした結果を返します。
/// <summary>
/// ゼロパディングを行う
/// </summary>
/// <param name="value">対象文字列</param>
/// <param name="digits">桁数</param>
/// <returns>ゼロパディング後の文字列</returns>
static string ZeroPadding(string value, int digits)
{
    // 対象文字列 が null の場合、そのまま返す。
    if (value is null)
    {
        return null;
    }

    // 桁数がマイナスの場合はエラーにする
    if (digits < 0)
    {
        throw new ArgumentException("digits は0以上を指定してください。");
    }

    // 念のため空白を取り除く
    var result = value.Trim();

    // 先頭1文字を取り出す
    var sign = result.Length >= 1 ? result.Substring(0, 1) : string.Empty;

    // 先頭の文字が符号の場合、処理を分岐
    if (sign == "+" || sign == "-")
    {
        // 先頭の符号を取り除く
        result = result.Remove(0, 1);

        // 指定桁数で前ゼロ埋め
        result = result.PadLeft(digits - 1, '0');

        // 先頭に符号を付与
        result = sign + result;
    }
    else
    {
        // 指定桁数で前ゼロ埋め
        result = result.PadLeft(digits, '0');
    }

    return result;
}

サンプルコードの使用例

string result;

// 結果 = "00000"
result = ZeroPadding("", 5);

// 結果 = "00123"
result = ZeroPadding("123", 5);

// 結果 = "+0123"
result = ZeroPadding("+123", 5);

// 結果 = "-0123"
result = ZeroPadding("-123", 5);
サンプルコードの実行結果
サンプルコードの実行結果

サンプルコードのダウンロード

ダウンロードリンク

参考資料

検証環境