VBSで数字0埋めする方法
この間の仕事でのこと。
ちょっと設定ファイルというか文字列操作をするときに数字の0(ゼロ)埋めをしたかったんですが、VBSでこれを行う関数を見つけれませんでした。
ちなみに.NET(VB,C#)なんかだとString.Formatでできるようですね。
そこで関数自作してみたので一応紹介しておきます。
やりたいこと
数字を指定の桁数まで0埋めする
例) 5 , 3 ⇒ 005
99 , 4 ⇒ 0099
10 , 2 ⇒ 10
自作関数
'====================================================================== ' 数値が指定桁数より小さい場合、左側を0で埋める。 ' ' @Param intNum [IN] 0埋めしたい数値 ' @Param intBeam [IN] 桁数 ' @Return 0で埋めた後の数値文字列。 '====================================================================== Function FillLeftZero(intNum, intBeam) Dim Log10 '数値の常用対数 Dim intBeamDif '桁数の差 Dim i 'ループカウンタ FillLeftZero = "" 'intNumの常用対数を取る(10の何乗かを取得する) Log10 = Log(intNum) / Log(10) '桁数の差を取る '10の0乗であれば1桁、10の1乗であれば2桁 … となるため1を足す intBeamDif = intBeam - (Fix(Log10) + 1) '桁数の差分だけ0埋め For i = 1 to intBeamDif FillLeftZero = FillLeftZero + "0" Next 'もとの数字を付け加える FillLeftZero = FillLeftZero + CStr(intNum) End Function
とかやってるうちに
VBでの方法どうだったかなーとか調べてたらもっと短く実装されている関数を見つけてしまった…
勝手に数字として扱わないといけないと思い込んでいたようです。
VB6 - 指定の文字数になるまで先頭を文字で埋める
を参考にVBS用にカスタマイズしたものを記載させていただきます。
勉強になります。
'================================================================================== ' 指定の文字数になるまで先頭を文字で埋めます。 ' ' @Param stTarget 処理対象となる文字列。 ' @Param iLength 文字の長さ。 ' @Param [chOne] 埋める文字。 ' @Return 先頭を指定の文字で iLength の長さまで埋められた文字列。 '================================================================================== Function PadLeft(stTarget, iLength , chOne) Do While (Len(stTarget) < iLength) stTarget = chOne & stTarget Loop PadLeft = Right(stTarget, iLength) End Function