vbscript - 替换所有空格

时间:2011-12-06 08:38:50

标签: vbscript replace

我有6400多条记录正在循环播放。对于以下每一个:我通过测试地址是否与邮局使用的类似(查找地址)来检查地址是否有效。我需要仔细检查邮政编码是否已撤回匹配。

唯一的问题是邮政编码可能已经以多种不同的格式输入,例如:

OP6 6YH
OP66YH
OP6  6YH. 

如果替换(strPostcode,"","")=替换(xmlAddress.selectSingleNode(" // postcode")。text,&#34 ;","")然后

我想删除字符串中的所有空格。如果我执行上面的替换,它将删除第一个示例的空格,但为第三个示例留下一个。

我知道我可以使用循环语句删除它们,但是相信这会使脚本运行得非常慢,因为它必须循环遍历6400+记录以删除空格。

还有其他方法吗?

3 个答案:

答案 0 :(得分:4)

我没有意识到你必须添加-1才能删除所有空格

Replace(strPostcode," ","",1,-1)

答案 1 :(得分:4)

就我个人而言,我刚刚完成了这样的循环:

Dim sLast
Do
    sLast = strPostcode
    strPostcode = Replace(strPostcode, " ", "")
    If sLast = strPostcode Then Exit Do
Loop

但是,您可能希望使用正则表达式替换:

Dim re : Set re = New RegExp
re.Global = True
re.Pattern = " +"  ' Match one or more spaces
WScript.Echo re.Replace("OP6 6YH.", "")
WScript.Echo re.Replace("OP6  6YH.", "")
WScript.Echo re.Replace("O  P   6       6    Y     H.", "")
Set re = Nothing

后者的输出是:

D:\Development>cscript replace.vbs
OP66YH.
OP66YH.
OP66YH.
D:\Development> 

答案 2 :(得分:2)

这是语法Replace(expression, find, replacewith[, start[, count[, compare]]])

默认为-1表示计数,1表示开始。可能是某些dll损坏了更改Replace函数的默认值。