将整数格式化为5位字符串

5

我需要一个字符串,基于一个整数,该字符串始终应该有5个数字。

例如:

myInteger = 999
formatedInteger = "00999"

在经典ASP中,最好的方式是什么?
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)

我会支持这个。我喜欢它的简洁性。 对于这个问题,只需要执行以下操作: MyString = right("000000" & cstr(myinteger), 6) - Stefan
是的,我会将其包含在一个函数中。 - Tomalak
我使用类似的函数,但添加了一个检查,以防数字比所需的位数多。我确实喜欢Jonathan Lonowski的函数如何固有地处理这个问题。 - Mike Henry

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

我喜欢它本质上处理数字比所需宽度更多位数的情况。 - Mike Henry

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

0

实际上,你应该问自己为什么需要这个。

如果这是为了显示目的,那么最好在显示时应用字符串格式化函数(肯定会有一个),将整数转换为字符串。

另一方面,如果您需要它进行内部处理,即您始终期望在循环或其他操作中使用五位数字,但不希望对该值进行算术运算,则首先将整数转换为字符串,然后再进行任何处理。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接