VBScript Scripting Techniques > Data > Strings
| Val( ) | |
|---|---|
| VBScript Code: | |
|
Function Val( myString ) ' Val Function for VBScript (aka ParseInt Function in VBScript). ' By Denis St-Pierre. ' Natively VBScript has no function to extract numbers from a string. ' Based shamelessly on MS' Helpfile example on RegExp object. ' CAVEAT: Returns only the *last* match found ' (or, with objRE.Global = False, only the *first* match) Dim colMatches, objMatch, objRE, strPattern ' Default if no numbers are found Val = 0 strPattern = "[-+0-9]+" ' Numbers positive and negative; use ' "ˆ[-+0-9]+" to emulate Rexx' Value() ' function, which returns 0 unless the ' string starts with a number or sign. Set objRE = New RegExp ' Create regular expression object. objRE.Pattern = strPattern ' Set pattern. objRE.IgnoreCase = True ' Set case insensitivity. objRE.Global = True ' Set global applicability: ' True => return last match only, ' False => return first match only. Set colMatches = objRE.Execute( myString ) ' Execute search. For Each objMatch In colMatches ' Iterate Matches collection. Val = objMatch.Value Next Set objRE= Nothing End Function |
|
| Requirements: | |
| Windows version: | Windows 2000 or later, or Internet Explorer 5.0 or later |
| Network: | any |
| Client software: | Internet Explorer 5.0 or later for pre-Windows 2000 |
| Script Engine: | any |
| Summarized: | Works in Windows 2000 or later, or Internet Explorer 5.0 or later. |
| [Back to the top of this page] | |
| Sample Script | |
| VBScript Code: | |
|
Option Explicit WScript.Echo Val( "That 18 year old is darned hot." ) WScript.Echo Val( "That 18 year old is darned hot. She was born in 1980" ) |
|
| Sample Output: | |
|
18 1980 |
|
| [Back to the top of this page] | |
Sometimes I need to display results in columns. Using tabs may help but isn't exactly "fail-safe".
For that reason I wrote the VBScript functions LeftPad and RightPad.
Some examples to explain their usage:
myString = "ABCDEF"
WScript.Echo Left( myString, 3 )
WScript.Echo Left( myString, 9 )
will display:
ABC
ABCDEF
myString = "ABCDEF"
WScript.Echo LeftPad( myString, 3, "+" )
WScript.Echo LeftPad( myString, 9, "+" )
will display:
ABC
ABCDEF+++
LeftPad will often be used to pad strings with spaces.
RightPad is LeftPad's counterpart:
myString = "ABCDEF"
WScript.Echo Right( myString, 3 )
WScript.Echo Right( myString, 9 )
will display:
DEF
ABCDEF
myString = "ABCDEF"
WScript.Echo RightPad( myString, 3, "+" )
WScript.Echo RightPad( myString, 9, "+" )
will display:
ABC
+++ABCDEF
RightPad will often be used to pad numbers (in strings) with zeroes.
Look at this combination:
Dim arrName(1)
Dim arrAge(1)
arrName(0) = "John Doe"
arrName(1) = "Vanessa James"
arrAge(0) = 9
arrAge(1) = 65
WScript.Echo LeftPad( "NAME:", 20, " " ) & RightPad( "AGE:", 4, " " )
For i = 0 To UBound( arrName )
WScript.Echo LeftPad( arrName(i), 20, " " ) & RightPad( arrAge(i), 4, " " )
Next
will display:
NAME: AGE:
John Doe 9
Vanessa James 65
LeftPad, optionally combined with RightPad, is perfect for displaying lists, e.g. WMI class properties and their values.
VBScript code:
Function LeftPad( strText, intLen, chrPad )
'LeftPad( "1234", 7, "x" ) = "1234xxx"
'LeftPad( "1234", 3, "x" ) = "123"
LeftPad = Left( strText & String( intLen, chrPad ), intLen )
End Function
Function RightPad( strText, intLen, chrPad )
'RightPad( "1234", 7, "x" ) = "xxx1234"
'RightPad( "1234", 3, "x" ) = "234"
RightPad = Right( String( intLen, chrPad ) & strText, intLen )
End Function
[Back to the top of this page]
| unique visitors since July 2007 | page last uploaded: 6 April 2009, 00:08 |