我知道我可以通过赋予分隔符将字符串拆分为多个子字符串。我知道我也可以根据字符位置选择一个子字符串,如下所示:
sAddressOverflow = Right(sAddressLine1,5)
我想做的是分割一个输入字符串,如下所示:
“123 South Main Street Apt.24B”
但我只想最终得到两个子串,这些子串基于第25个字符左边的第一个空格进行拆分。所以我使用上面输入的所需输出将是:
Substring1 =“123 South Main Street” Substring2 =“Apt.24B”
这可能吗?
答案 0 :(得分:2)
正则表达式的优点是,您可以独立于您使用它的位置配置您的模式,并且它们具有高度适应性,因此我更喜欢使用正则表达式进行字符串操作。不幸的是,Ansgar Wiechers的模式并不完全符合您的要求。这是一个:
myString = "1234 6789A 234567 9B12 4567 890"
Set re = new RegExp
re.Pattern = "^(.{1,25}) (.*)$"
Set matches = re.Execute(myString)
wscript.echo "leftpart: " & matches(0).submatches(0)
wscript.echo "rightpart: " & matches(0).submatches(1)
答案 1 :(得分:1)
没有这样的内置功能, 但你可能想试试这个,
add = "123 South Main Street Apt. 24B"
valid = Left(add,25)
arr = Split(valid)
char= InStrRev(add,arr(UBound(arr)))-1
address1 = Left(add,char)
address2= Right(add,Len(add)-char)
Wscript.echo address1
Wscript.echo address2
这可能不是完美的方式,但它有效!!!
答案 2 :(得分:0)
您可以使用正则表达式执行此操作,但需要明确定义的格式:
addr = "123 South Main Street Apt. 24B"
Set re = New RegExp
re.Pattern = "^(\d+ .*) +(apt\. +\d+(.*?))$"
re.IgnoreCase = True
Set m = re.Execute(addr)
If m.Count > 0 Then
WScript.Echo m(0).SubMatches(0)
WScript.Echo m(0).SubMatches(1)
End If
通过“定义良好的格式”,我的意思是你需要在表达式中使用一些“锚点”(或修复点)来识别字符串中的部分。在示例中,锚是子字符串“apt”。后跟一个或多个数字。