[WSH VBS] 数字をゼロ埋めするには
VBScriptで数字の先頭ゼロ埋めして桁を揃えるのは、簡単に思えて意外に面倒です。
VBにはもともとFormat関数があるのですが、VBScriptには何故かこれがありません。
なんでだろう??
とう言うわけで、ゼロ埋めは関数を作って対応します。
まずは、2種類の方法を作ってみました。どちらも同じ結果を返します。
message = vbNullString
message = message & “AlignZero1(3, 6) = ” & AlignZero1(3, 6) & vbNewLine
message = message & “AlignZero1(12, 6) = ” & AlignZero1(12, 6) & vbNewLine
message = message & “AlignZero1(999999, 6) = ” & AlignZero1(999999, 6) & vbNewLine
message = message & “AlignZero1(1234567, 6) = ” & AlignZero1(1234567, 6) & vbNewLine
message = message & “AlignZero2(3, 6) = ” & AlignZero2(3, 6) & vbNewLine
message = message & “AlignZero2(12, 6) = ” & AlignZero2(12, 6) & vbNewLine
message = message & “AlignZero2(999999, 6) = ” & AlignZero2(999999, 6) & vbNewLine
message = message & “AlignZero2(1234567, 6) = ” & AlignZero2(1234567, 6) & vbNewLine
WScript.Echo message
‘数値の前を指定桁数でゼロ埋めする
‘指定桁数を超えた数値が指定された場合は、そのままの値を返す
‘value: 対象の数値
‘digit: 桁数
Function AlignZero1(value, digit)
If digit – Len(Value) < 0 Then
AlignZero1 = value
Exit Function
End If
AlignZero1 = Replace(Space(digit - Len(value)) & value, Space(1), "0")
End Function
'数値の前を指定桁数でゼロ埋めする
'指定桁数を超えた数値が指定された場合は、そのままの値を返す
'value: 対象の数値
'digit: 桁数
Function AlignZero2(value, digit)
If digit - Len(Value) < 0 Then
AlignZero2 = value
Exit Function
End If
AlignZero2 = Right(Repeat("0", digit) & value, digit)
End Function
Function Repeat(value, count)
Dim result
result = ""
For i = 0 to count - 1
result = result & value
Next
Repeat = result
End Function
[/vb]
他にもいろんな方法があると思います。
AlignZero1のほうが、他の関数を作らなくていいので簡単かな。
お試しあれ。
== ランキングに参加しています。ぜひクリックお願いします ==
[Windows8] スタートボタンを何故なくした??? タスクマネージャーを起動するショートカット