printf()-like Format Function in VBScript
A format function in VBScript that simulates the printf() C function
Overview
The function fmt
helps you to format a string in VBScript as you do in C.
In C, if you write:
printf( "this is %s number %d", "test", 1 );
then you would use the function fmt
in VBScript like this:
dim str
str = fmt( "this is %x number %x", Array("test", 1) )
Details
The complete function looks like this:
' works like the printf-function in C.
' takes a string with format characters and an array
' to expand.
'
' the format characters are always "%x", independ of the
' type.
'
' usage example:
' dim str
' str = fmt( "hello, Mr. %x, today's date is %x.", Array("Miller",Date) )
' response.Write str
function fmt( str, args )
dim res ' the result string.
res = ""
dim pos ' the current position in the args array.
pos = 0
dim i
for i = 1 to Len(str)
' found a fmt char.
if Mid(str,i,1)="%" then
if i<Len(str) then
' normal percent.
if Mid(str,i+1,1)="%" then
res = res & "%"
i = i + 1
' expand from array.
elseif Mid(str,i+1,1)="x" then
res = res & CStr(args(pos))
pos = pos+1
i = i + 1
end if
end if
' found a normal char.
else
res = res & Mid(str,i,1)
end if
next
fmt = res
end function
The format character is always %x
, independent of the actual type, since VBScript has no direct types like integer or string.
Improve Me!
The function fits my needs where I used it, but can be extended in some ways to behave more like printf
:
- Format characters can be extended, i.e., the
%x
could be divided up into%d
for integers,%x
for hex numbers,%f
for float, etc. - The other
printf
features like leading zeros and all that stuff could be added too.
Epilog
As always: my tip for editing VBScript files: Tried a lot of editors (including Frontpage, InterDev, etc.), I found the most usable program is EditPlus, which you can find on www.editplus.com (no, I'm not getting money from them).
Please feel free to ask any questions you have by e-mail: keim@zeta-software.de.
History
- 20th January, 2000: Initial post