記事内に広告が含まれています。

【VB.NET】数値を指定の桁数までゼロ埋めする

VB.NETにおける、ゼロ埋めする方法です。結構簡単です。

【スポンサーリンク】

ゼロ埋めとは

IT業界でよくあるゼロ埋めです。例えば、数値10桁まで入力可能なテキストボックスに3桁だけ入れると、左の7桁は0で埋まるということを言います。図で表すと、こうなります。10桁まで入力可能&10桁未満はゼロ埋めしてくれるテキストボックスを用意しました。

f:id:neko_britannia:20200522215733j:plain

まずは任意に3桁入れてみて実行ボタンを押下すると…

f:id:neko_britannia:20200522215840j:plain

このように、入力したのは「123」の3桁ですが、左側に0が埋まりました。ゼロパディングとも言われ、プログラミングをしているとほぼ必ず遭遇するでしょう。では実際にゼロ埋めするソースコードを書いてみましょう。方法は3つあります。

【スポンサーリンク】

PadLeftを使用してゼロ埋めする

とてもシンプルな方法です。StringクラスのPadLeftメソッドを使用します。上記のゼロ埋めするだけのシンプルな画面の実行ボタン押下イベントの中身です。

Private Sub cmdPadding_Click(sender As Object, e As EventArgs) Handles cmdPadding.Click
    Try
        txtPadNum.Text = txtPadNum.Text.PadLeft(10, "0"c)
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub

はい、たったこれだけです。PadLeftメソッドの引数については、

  • 第1引数:文字列の長さ(バイト)
  • 第2引数:埋めたい文字(1バイト)

となっています。細かいですが、第2引数は「“0”c」として下さい。「”0″」と書いて0埋めが出来ないと困っている人をよく見かけます。尚、PadLeftは1バイト文字であれば、任意の文字で埋めることが可能です。例えば「X」と埋めたい場合は「”X”c」と書けば、Xで埋めることも出来ます。

【スポンサーリンク】

ToStringを使用してゼロ埋めする

ToStringを使用してゼロ埋めする方法も高頻度で見かけます。VB6からマイグレーションされたソースだと結構見かけますね。

Private Sub cmdPadding_Click(sender As Object, e As EventArgs) Handles cmdPadding.Click
    Dim intNum As Integer
    Try
        intNum = Integer.Parse(txtPadNum.Text)
        txtPadNum.Text = intNum.ToString("0000000000")
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub

Integer型のToStringメソッドを上記の様に使用すると、ゼロ埋めが可能です。

※テキストボックスのTextプロパティはString型なので、都合上、一度Integer型に変換しています。

上記のソースではInteger型をToStringしていますが、Integer型同様に数値を扱うShort型やLong型にもToStringメソッドが用意されていますので、Short型やLong型の変数でも同じようにゼロ埋めすることが可能です。

【スポンサーリンク】

String.Formatを使用してゼロ埋めする

String.Formatを使用してゼロ埋めすることも可能です。ちょっとテクニック使いたかった感のあるソースに見られる方法です。

Private Sub cmdPadding_Click(sender As Object, e As EventArgs) Handles cmdPadding.Click
    Dim intNum As Integer
    Try
        intNum = Integer.Parse(txtPadNum.Text)
        txtPadNum.Text = String.Format("{0:D10}", intNum)

    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub

String.Formatを上記の様に使用すればゼロ埋めが可能です。

※テキストボックスのTextプロパティはString型なので、都合上、一度Integer型に変換しています。

  • 第1引数:{パディング文字:D埋めたい桁数}
  • 第2引数:対象の文字(数値型)

見かけたときに「ゼロ埋めしてるんだな」という知識を持っておけば大丈夫だと思います。

【スポンサーリンク】

編集後記

基本的にPadLeftを使用してゼロ埋めすればいいと思いますが、開発プロジェクトのコーディング規約に沿って選択してください。コーディング規約が無いという場合はどれかに統一するのがベターかと。

例えばですが、もし、数値が入っているのがString型の変数であればPadLeftを使用し、Integer型等の数値型の変数であればToStringやString.Formatを使用するなど、数値が入ってる変数によって使い方を分けてもいいかもしれません(ただし、可読性やメンテナンスを考慮した場合、やはりどれかに統一するのが一番いいかも)。

【スポンサーリンク】

参考サイト

String.PadLeft メソッド (System)
現在の文字列の先頭に空白または指定された Unicode 文字が埋め込まれた指定された長さの新しい文字列を返します。
方法: 数値に先行するゼロを埋め込む - .NET
数値に先行するゼロを埋め込む方法について説明します。 整数値または数値に対して、指定した合計の長さまで先行するゼロを追加するか、先行するゼロの数を指定します。

.