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

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

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

Dim <ゼロパディング結果> As String = <対象文字列>.PadLeft(<桁数>, "0")

解説

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

サンプルコード

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

' 10桁で前ゼロ埋め
Dim after As String = before.PadLeft(10, "0")

' 結果 = "0000000123"
Console.WriteLine(after)

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

符号を含む場合

文字列中に プラス や マイナスの符号 が含まれていると、次のように符号の位置がずれてしまいます。 符号に対応するには 文字列中に 符号が含まれているかを確認し、ゼロ埋め後に 符号を戻す などの対応が必要です。
Dim value As String
Dim result As String

' 結果 = "0+123"
value = "+123"
result = value.PadLeft(5, "0")

' 結果 = "0-123"
value = "-123"
result = value.PadLeft(5, "0")

サンプルコード

次のサンプルコードは、符号に対応した ゼロパディング関数の一例です。引数に 文字列 と 桁数 を渡すと、ゼロパディングした結果を返します。
''' <summary>
''' ゼロパディングを行う
''' </summary>
''' <param name="value">対象文字列</param>
''' <param name="digits">桁数</param>
''' <returns>ゼロパディング後の文字列</returns>
Function ZeroPadding(value As String, digits As Integer) As String
    ' 対象文字列 が Nothing の場合、そのまま返す。
    If value Is Nothing Then
        Return Nothing
    End If

    ' 桁数がマイナスの場合はエラーにする
    If digits < 0 Then
        Throw New ArgumentException("digits は0以上を指定してください。")
    End If

    ' 念のため空白を取り除く
    Dim result As String = value.Trim()

    ' 先頭1文字を取り出す
    Dim sign As String = If(result.Length >= 1, result.Substring(0, 1), String.Empty)

    ' 先頭の文字が符号の場合、処理を分岐
    If sign = "+" OrElse sign = "-" Then
        ' 先頭の符号を取り除く
        result = result.Remove(0, 1)

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

        ' 先頭に符号を付与
        result = sign + result
    Else
        ' 指定桁数で前ゼロ埋め
        result = result.PadLeft(digits, "0")
    End If

    Return result
End Function

サンプルコードの使用例

Dim result As String

' 結果 = "00000"
result = ZeroPadding("", 5)

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

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

' 結果 = "-0123"
result = ZeroPadding("-123", 5)
VB.NET ゼロパディング サンプルコードの実行結果
VB.NET ゼロパディング サンプルコードの実行結果

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

ダウンロードリンク

参考資料

検証環境