5

整数に基づく文字列が必要です。これは常に5桁である必要があります。

例:

myInteger = 999
formatedInteger = "00999"

従来のASPでこれを行うための最良の方法は何ですか?

4

4 に答える 4

9

これには、文字列操作関数を使用できます。

これは、VBScript (回答の元のバージョン) を使用した従来の ASP を想定しています。

Const NUMBER_DIGITS = 5

Dim myInteger
Dim formatedInteger

myInteger = 999
formatedInteger = Right(String(NUMBER_DIGITS, "0") & myInteger, NUMBER_DIGITS)

関数でラップされ、可変幅のパディングを提供する最適化されたバージョンを次に示します。

Const NUMBER_PADDING = "000000000000" ' a few zeroes more just to make sure

Function ZeroPadInteger(i, numberOfDigits)
  ZeroPadInteger = Right(NUMBER_PADDING & i, numberOfDigits)
End Function

' Call in code:

strNumber = ZeroPadInteger(myInteger, 5)
于 2008-11-17T12:09:56.150 に答える
2

このようなものは、私がほとんどの時間見たものです:

function PadNumber(number, width)
   dim padded : padded = cStr(number)

   while (len(padded) < width)
       padded = "0" & padded
   wend

   PadNumber = padded
end function

PadNumber(999, 5) '00999
于 2008-11-17T12:08:40.040 に答える
1

ワンライナーでこれを試してください(まあ、エラー防止付きの2つ):

function padZeroDigits(sVariable, iLength)
    if (iLength <= len(sVariable)) then padZeroDigits = sVariable : exit function : end if
    padZeroDigits = string(iLength - len(sVariable),"0") & sVariable
end function
于 2008-11-25T15:02:54.723 に答える
0

本当に、なぜこれが必要なのかを自問する必要があります。

これが表示目的の場合は、表示の時点で文字列書式設定関数 (1 つある) を整数に適用するのがおそらく最善です。

一方、内部処理に必要な場合、つまり、ループなどで常に 5 桁を期待しているが、値に対して算術演算を行うことを期待していない場合は、最初に整数を文字列に変換してから、任意の処理を行います。

つまり、整数変数を文字列に変換して新しい変数に格納し、それを使用します。

于 2008-11-17T12:10:47.367 に答える