Generating Random Strings
The following function generates random data using a format string that you can customize. The following example can be found in the RandomString.vbs and RandomString.py files located in the <Installdir>\CodeSamplesPlus folder.
VBScript sample
' Source code
Randomize (timer)
' Declaration of all formats
' Note that a token contained within a second token (e.g. yy to yyyy) must be placed AFTER the containing token (yyyy must precede yy)
FormatArray = Array("#", "DAY", "MONTH", "dd", "mm", "yyyy", "yy", "NAME", "COLOR", "CAR")
' Definition of formats not appearing as a Case in GetRandStrForToken
Dim ValuesArray
ValuesArray = _
Array(_
Array("DAY", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"),_
Array("MONTH", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"),_
Array("COLOR", "Red", "Yellow", "Blue", "Green"),_
Array("NAME", "Hilik", "Oren", "Shoshi", "Ilan"),_
Array("CAR", "Ford", "Toyota", "Lexus", "Mazda")_
)
' Generate a random value for a specific token
Function GetRandStrForToken(sToken)
Select Case sToken
Case "#"' Single digit
GetRandStrForToken = CStr(Int(Rnd*10))
Case "dd"' May (numeric)
GetRandStrForToken = CStr (Int(Rnd*31 + 1))
Case "mm"' Month (numeric)
GetRandStrForToken = CStr (Int(Rnd*12 + 1))
Case "yy"' Two digit Year
GetRandStrForToken = CStr(Int(Rnd*10)) + CStr(Int(Rnd*10))
Case "yyyy"' Four digit Year
GetRandStrForToken = CStr (1950 + Int(Rnd * 100))
Case Else ' Pick from the Values Array for other formats
'LookUpArray
For i = 0 to UBound(ValuesArray)
If sToken = ValuesArray(i)(0) Then
GetRandStrForToken = ValuesArray(i)( 1 + Int( rnd*(UBound(ValuesArray(i))) ) )
Exit For
End If
Next
End Select
End Function
' Parse the current token (if any)
Function GetNextToken (ByRef sFormat)
For each sToken in FormatArray
sTemp = Mid(sFormat, 1, Len(sToken))
If sTemp = sToken Then
GetNextToken = sToken
sFormat = Mid(sFormat, Len(sToken) + 1)
Exit Function
End If
Next
End Function
' Generate random data given a format
Function GenerateRandData(ByVal Format)
Dim nPos
Dim nLength
nLength = Len(Format)
While nLength > 0
’ Anything inside a [] brackets is copied as is
If Mid(Format, 1, 1) = "[" Then ' Find the closing brackets
nPos = InStr(1, Format, "]", vbTextCompare)
If nPos = 0 Then Exit Function
GenerateRandData = GenerateRandData + Mid(Format, 2, nPos - 2)
Format = Mid(Format, nPos + 1)
nLength = Len(Format)
Else
’ Search for a valid token
sToken = GetNextToken(Format)
If Not sToken = "" Then
GenerateRandData = GenerateRandData + GetRandStrForToken(sToken)
nLength = Len(Format)
Else ' No token - just copy the current character
GenerateRandData = GenerateRandData + Mid(Format,1, 1)
If nLength = 1 Then
Exit Function
End If
Format = Mid(Format, 2)
nLength = Len(Format)
End If
End If
Wend
End Function
' Usage
msgbox GenerateRandData ("Today Is the first DAY in MONTH")
msgbox GenerateRandData ("A Date in the format [dd/mm/yyyy] dd/mm/yyyy")
msgbox GenerateRandData ("My name is NAME, I drive a COLOR CAR. you can reach me on +972-54-###-####")Python sample
import random
import time
random.seed(time.time())
FORMAT_TOKENS = ["#", "DAY", "MONTH", "dd", "mm", "yyyy", "yy", "NAME", "COLOR", "CAR"]
VALUES = {
"DAY": ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
"MONTH": ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
"COLOR": ["Red", "Yellow", "Blue", "Green"],
"NAME": ["Hilik", "Oren", "Shoshi", "Ilan"],
"CAR": ["Ford", "Toyota", "Lexus", "Mazda"],
}
def get_rand_str_for_token(token):
if token == "#":
return str(random.randint(0, 9))
elif token == "dd":
return str(random.randint(1, 31))
elif token == "mm":
return str(random.randint(1, 12))
elif token == "yy":
return f"{random.randint(0, 9)}{random.randint(0, 9)}"
elif token == "yyyy":
return str(1950 + random.randint(0, 99))
else:
return random.choice(VALUES[token])
def get_next_token(format_str):
for token in FORMAT_TOKENS:
if format_str.startswith(token):
return token, format_str[len(token) :]
return None, format_str
def generate_rand_data(format_str):
result = ""
while format_str:
if format_str.startswith("["):
end_pos = format_str.find("]")
if end_pos == -1:
break
result += format_str[1:end_pos]
format_str = format_str[end_pos + 1 :]
else:
token, remainder = get_next_token(format_str)
if token:
result += get_rand_str_for_token(token)
format_str = remainder
else:
result += format_str[0]
format_str = format_str[1:]
return result
print(generate_rand_data("Today Is the first DAY in MONTH"))
print(generate_rand_data("A Date in the format [dd/mm/yyyy] dd/mm/yyyy"))
print(generate_rand_data("My name is NAME, I drive a COLOR CAR. you can reach me on +972-54-###-####"))

