您的位置:首页 >ASP中实现字符部位类似.NET里String对象的PadLeft和PadRight函数
发布于2026-05-03 阅读(0)
扫一扫,手机访问
技术论坛里总有些经典问题反复浮现,最近又看到有人在问:怎么把日期规整地格式化成“2004-08-09 05:02:20”这样的样式?这话题一出来,就知道又到了“字符串补位”函数登场的时候了。本质上,我们要实现的就是类似.NET里String对象PadLeft和PadRight的功能,让数字位数不足时,能自动在左侧或右侧补上指定的字符(比如补零)。
先来看一个最直接的左侧补位函数实现:
Function PadLeft(Value, Length, sChar) Dim strText, I strText = String(Length, sChar) strText = strText & Value LeftPad = Right(strText, Length) End Function
它的逻辑非常清晰:先构造一个由补位字符(如“0”)填满的目标长度字符串,然后把原值拼在后面,最后从右截取目标长度。这样一来,如果原值长度不够,前面自然就被补位字符填充了。
那么右侧补位呢?其实原理相通,只需稍作调整:
Function PadRight(Value, Length, sChar) Dim strText, I strText = String(Length, sChar) strText = Value & strText LeftPad = Left(strText, Length) End Function
看,只是拼接顺序和截取方向变了。有了这两个小工具,处理日期时间里的单位数字就轻松了。一个典型的应用示例如下:
AA = year(now) & “-” & PadLeft(month(now),2,“0”) & “-” & PadLeft(Day(now),2,“0”) & ” ” & PadLeft(Hour(now),2,“0”) & “:” & PadLeft(Minute(now),2,“0”) & “:” & PadLeft(Second(now),2,“0”)
这段代码能确保月、日、时、分、秒都是两位显示,最终生成我们熟悉的“YYYY-MM-DD HH:MM:SS”格式。
当然,每次都手动调用补位函数拼凑日期略显繁琐。在实际开发中,更常见的做法是封装一个功能更全面的格式化函数。下面这段“万能”代码,可以说是一个经典范例:
Public Function ForMatDate(DateAndTime, Para) ‘格式化日期(日期时间,格式)
Dim Y, M, D, H, F, S
IF Not ISNumeric(Para) Or Not ISDate(DateAndTime) Then Exit Function
Y = CStr(Year(DateAndTime))
M = CStr(Month(DateAndTime)):IF Len(M) = 1 Then M = “0” & M
D = CStr(Day(DateAndTime)):IF Len(D) = 1 Then D = “0” & D
H = CStr(Hour(DateAndTime)):IF Len(H) = 1 Then H = “0” & H
F = CStr(Minute(DateAndTime)):IF Len(F) = 1 Then F = “0” & F
S = CStr(Second(DateAndTime)):IF Len(S) = 1 Then S = “0” & S
Select Case Para
Case “0”
ForMatDate = Y & “-” & M & “-” & D & ” ” & H & “:” & F & “:” & S
Case “1”
ForMatDate = Y & “-” & M & “-” & D & ” ” & H & “:” & F
Case “2”
ForMatDate = Y & “-” & M & “-” & D
Case “3”
ForMatDate = Y & “/” & M & “/” & D
Case “4”
ForMatDate = Y & “年” & M & “月” & D & “日”
Case “5”
ForMatDate = M & “-” & D & ” ” & H & “:” & F
Case “6”
ForMatDate = M & “/” & D
Case “7”
ForMatDate = M & “月” & D & “日”
Case “8”
ForMatDate = Y & “年” & M & “月”
Case “9”
ForMatDate = Y & “-” & M
Case “10”
ForMatDate = Y & “/” & M
Case “11”
ForMatDate = right(Y,2) & “-” & M & “-” & D & ” ” & H & “:” & F
Case “12”
ForMatDate = right(Y,2) & “-” & M & “-” & D
Case “13”
ForMatDate = M & “-” & D
Case Else
ForMatDate = DateAndTime
End Select
End Function
Response.Write ForMatDate(Now,“2”)
这个函数的巧妙之处在于,它一次性提取了日期时间的各个组成部分并完成了补零,然后通过一个参数Para来切换十几种常见的输出格式,从完整的日期时间到简写的年月,甚至中文格式都囊括在内,实用性非常高。
除了处理日期,补位思想在其他场景也随处可见,比如生成固定位数的订单号、用户ID等。下面这个函数就更通用了,专为数字补位设计:
function formatsn(getnum,getbit) dim formatsnnum,formatsnpre,formatsnj formatsnnum = getbit – len(getnum) for formatsnj = 1 to formatsnnum formatsnpre = formatsnpre & “0” next formatsn = formatsnpre & getnum end function
使用方法
formatsn(getnum, getbit)
参数很简单:
getnum 传入需要处理的数字或字符串。
getbit 指定最终输出的总位数。
它的工作流程是:先计算需要补几个零(目标位数减去当前位数),然后用循环生成相应数量的“0”作为前缀,最后与原数字拼接。这样,无论输入是“7”还是“123”,在要求5位输出时,你都能得到“00007”或“00123”这样整齐划一的结果。对于维护数据展示的规范性,这类小工具往往能起到四两拨千斤的作用。
上一篇:ASP错误捕获的几种常规处理方式
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9