2013-08-09 11 views
7

Sto cercando di pad una stringa con 0 alla lunghezza del left.The della stringa di uscita dovrebbe essere 7. Ecco il mio codice:LPAD con zero di in VBScript

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

sto errore ottenendo Previsto dichiarazione Please help me Thank You

risposta

5

in è una parola riservata, quindi non può essere usato come un nome di variabile e si deve passare una stringa di non "0" un intero 0, quindi:

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

msgbox result 
+0

Ciò non riuscirà ancora se 'inputStr' è più lungo di 7 caratteri, però. –

10

Questa funzione sinistra-pad un valore di input per il dato numero di caratteri usando il dato carattere di riempimento senza troncare il valore di ingresso:

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 

uscita:

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

Il codice seguente verrà eseguito il 5% più veloce:

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

msgbox result 
+0

Ma rischia di troncare e hardcode larghezza e riempimento. –

+0

Ho appena usato una lunghezza fornita nella domanda sopra. –

+0

È un ottimo one-liner per rispondere alla domanda e correggere intuitivamente ... esattamente ciò di cui avevo bisogno per questa risposta - non una definizione di funzione, ma qualcosa di semplice,/più veloce/intuitivo e che potrei semplicemente inserire nel mio (> Funzione esadecimale senza segno a 31 bit). Grazie Andrej. –