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

试试这个单行(好吧,两个防止错误):

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

真的,你应该问自己为什么你可能想要这个。

如果这是出于显示目的,那么最好在显示点将字符串格式化函数(会有一个)应用于您的整数。

另一方面,如果您需要它进行内部处理,即您总是希望循环中有五位数字或其他什么,但您不希望对值进行算术运算,然后先将整数转换为字符串然后做任何处理。

简而言之,将整数变量转换为字符串并存储在一个新变量中,然后使用它。

于 2008-11-17T12:10:47.367 回答