2013-08-09 28 views
7

Tôi đang cố gắng để pad một chuỗi với 0 để chiều dài left.The của chuỗi đầu ra nên 7. Dưới đây là mã của tôi:Lpad với zero trong VBScript

inputstr = "38" 
in = string(7 - Len(inputStr),0) & inputStr 
msgbox in 

Tôi nhận được lỗi dự kiến Bản Tuyên Bố Xin hãy giúp tôi cảm ơn

Trả lời

5

in là một từ dành riêng do đó không thể được sử dụng như một tên biến và bạn phải vượt qua một chuỗi "0" không phải là một số nguyên 0, vì vậy:

inputStr = "38" 
result = string(7 - Len(inputStr), "0") & inputStr 

msgbox result 
+0

Điều này sẽ vẫn thất bại nếu 'inputStr' dài hơn 7 ký tự. –

10

Chức năng này sẽ trái pad một giá trị đầu vào cho số lượng nhất định của nhân vật bằng cách sử dụng nhân vật đệm cho mà không cần cắt bỏ các giá trị đầu vào:

Function LPad(s, l, c) 
    Dim n : n = 0 
    If l > Len(s) Then n = l - Len(s) 
    LPad = String(n, c) & s 
End Function 

Output:

>>>WScript.Echo LPad(12345, 7, "0") 
0
>>>WScript.Echo LPad(12345, 3, "0") 
12345
11

Các mã sau sẽ chạy nhanh hơn 5%:

inputStr = "38" 
result = Right("0000000" & inputStr, 7) 

msgbox result 
+0

Nhưng rủi ro cắt ngắn và mã hóa chiều rộng và phụ. –

+0

Tôi chỉ sử dụng độ dài được cung cấp trong câu hỏi ở trên. –

+0

Là một câu trả lời tuyệt vời cho câu hỏi và trực quan đúng ... chính xác những gì tôi cần cho câu trả lời này - không phải là định nghĩa chức năng, nhưng đơn giản,/nhanh nhất có thể/và trực quan mà tôi có thể bỏ vào > Mã chức năng Hex không dấu 31 bit). Cảm ơn Andrej. –