长度未知的字符串的VBScript替换

长度未知的字符串的VBScript替换,vbscript,Vbscript,我正在Excel中工作,以获取错误的URL并替换不正确的字符。我要替换的字符是“%20”,但无法知道这些字符中有多少将出现在字符串中。可能只有一个“%20”或5个“%20%20%20%20”或它们之间的任何其他数目,但无论有多少个“%20”字符,我只想用一个正斜杠“/”替换 我知道我可以使用下面这样的东西,但如果有多个“%20”,我不想以多个正斜杠结束 例如,起始URL可能如下所示: 并且不管中间有多少“% 20”,我试图让它变成这样的格式:< /P> 无论字符串中有多少个“%20”,是否有

我正在Excel中工作,以获取错误的URL并替换不正确的字符。我要替换的字符是“%20”,但无法知道这些字符中有多少将出现在字符串中。可能只有一个“%20”或5个“%20%20%20%20”或它们之间的任何其他数目,但无论有多少个“%20”字符,我只想用一个正斜杠“/”替换

我知道我可以使用下面这样的东西,但如果有多个“%20”,我不想以多个正斜杠结束

例如,起始URL可能如下所示:

并且不管中间有多少“% 20”,我试图让它变成这样的格式:< /P>

无论字符串中有多少个“%20”,是否有某种方法可以用一个“/”替换所有字符


谢谢

只要
/
字符存在重复实例,就可以编写一个递归函数来执行
Replace
调用。我已经多年没有编写VBScript了,但我不记得有什么函数内置在该语言中进行这种类型的替换。

使用正则表达式(start)将字符串“%20”的序列替换为一个“/”:


以下代码将用单个/替换所有连续的%20。它不使用任何正则表达式。它首先使用分隔符%20拆分字符串,然后如果每个数组元素的长度都大于0,则将它们与分隔符/合并

str = "http://domainname.com/products/prodName%20%20%20ProdNumber"
a=Split(str,"%20")
For i=0 To UBound(a)
    If Len(a(i))>0 Then
        requiredStr = requiredStr & a(i)&"/"
    End If
Next
requiredStr=Left(requiredStr,Len(requiredStr)-1)
MsgBox requiredStr
让我知道它是否适合你

输出:

谢谢,我正在看这个,但意识到我可能会遇到问题,因为这是在Mac上:(正在尝试确定是否可以先在Mac上使用RegExp。无法在Mac上使用正则表达式,因此我将不得不尝试另一种方式。感谢您的响应。另一个有趣的想法。不确定如何编写此代码,但也将研究此问题。Thx。
>> s = "http://domainname.com/products/prodName%20%20%20ProdNumber"
>> Set r = New RegExp
>> r.Global = True
>> r.Pattern = "(%20)+"
>> WScript.Echo s
>> WScript.Echo r.Replace(s, "/")
>>
http://domainname.com/products/prodName%20%20%20ProdNumber
http://domainname.com/products/prodName/ProdNumber
>>
str = "http://domainname.com/products/prodName%20%20%20ProdNumber"
a=Split(str,"%20")
For i=0 To UBound(a)
    If Len(a(i))>0 Then
        requiredStr = requiredStr & a(i)&"/"
    End If
Next
requiredStr=Left(requiredStr,Len(requiredStr)-1)
MsgBox requiredStr