2013-08-09 2 views
7

Я пытаюсь раздуть строка с 0-х до длины left.The выводимой строки должны быть 7. Вот мой код:LPAD с нулями в VBScript

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

Я получаю сообщение об ошибке Ожидаемого Заявление Пожалуйста, помогите мне Спасибо

ответ

5

in является зарезервированным словом, так не может быть использован в качестве имени переменной, и вы должны передать строку "0" не целое 0, так:

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

msgbox result 
+0

Это все равно будет работать, если 'inputStr' длиннее 7 символов. –

10

Эта функция левой колодки входное значение для заданного числа символов с использованием заданного заполнени символа без усечения входного значения:

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 

Выход:

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

Следующий код будет работать на 5% быстрее:

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

msgbox result 
+0

Но риск усечения и хардкодов ширина и наполнитель. –

+0

Я просто использовал длину, указанную в вопросе выше. –

+0

Отличный ответ на один вопрос и интуитивно правильный ... именно то, что мне нужно для этого ответа - не определение функции, а что-то простое,/максимально возможное/и интуитивно понятное, что я мог бы просто заглянуть в мой (> 31-битная функция без знака Hex). Спасибо, Андрей. –

Смежные вопросы