我正在尝试替换字符串中的特殊字符和空格。我在网上发现正则表达式函数对此很方便,但我似乎无法使其正常工作。
当我尝试这个时,正则表达式函数会抛出错误"预期的指令结束":
Dim param = Regex.Replace("te !,;stDD ", "[^A-Za-z0-9]", "")
当我尝试这个时,字符串不会改变,但正则表达式函数确实通过了:
Set re = New RegExp
re.Pattern = "[^A-Za-z0-9]"
param = re.Replace("te !,;stDD ", "") 'string doesn't change on result
答案 0 :(得分:3)
当我尝试这个时,正则表达式函数抛出一个错误“预期的指令结束”:
Dim param = Regex.Replace("te !,;stDD ", "[^A-Za-z0-9]", "")
解析器引发错误,而不是正则表达式方法。在VBScript中,您无法在同一步骤中定义变量并为其分配值。你必须分开定义和赋值(如果你想要一个明确的定义)。
Dim param
param = Regex.Replace("te !,;stDD ", "[^A-Za-z0-9]", "")
你可以将两个语句分成一行,但用冒号分隔:
Dim param : param = Regex.Replace("te !,;stDD ", "[^A-Za-z0-9]", "")
但请注意,VBScript中没有Regex
类带有静态Replace()
方法,因此您仍然会从Regex.Replace()
收到错误。
您必须像在第二个代码段中一样实例化RegExp
对象,并使用该对象的Replace()
方法。
当我尝试这个时,字符串不会改变,但正则表达式函数确实通过了:
Set re = New RegExp re.Pattern = "[^A-Za-z0-9]" param = re.Replace("te !,;stDD ", "") 'string doesn't change on result
但字符串确实更改。如果你仔细看看输入和输出,你会看到:
"te !,;stDD " ← input string "te !,;stDD " ← output string
您的替换操作将删除字符串中既不是字母也不是数字的第一个字符。对于作为第一个空格的示例字符串。要删除非字母或数字的所有字符,您需要将Global
属性设置为True
:
Set re = New RegExp
re.Pattern = "[^A-Za-z0-9]"
re.Global = True
param = re.Replace("te !,;stDD ", "")