VBScript替换未知长度的字符串

时间:2017-06-05 18:50:40

标签: vbscript

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

我知道我可以使用类似下面的内容,但如果有多个“%20”,则不希望最终使用多个正斜杠

0

例如,起始网址可能如下所示:

http://domainname.com/products/prodName%20%20%20ProdNumber

并且无论中间有多少“%20”,我都试图让它像这样格式化:

http://domainname.com/products/prodName/ProdNumber

有什么方法可以用一个“/”替换所有这些,无论字符串中有多少“%20”?

感谢。

3 个答案:

答案 0 :(得分:2)

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

{{1}}

答案 1 :(得分:1)

以下代码将使用单个/替换所有连续%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

让我知道它是否适合你。

输出: enter image description here

答案 2 :(得分:-1)

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