我有一种情况,我调用一个带一个参数(一个字符串)的函数。出于某种原因,我的代码不接受我给它的字符串变量,并给我一个错误。我是否犯了一些愚蠢的语法错误?这是简化的代码框架:
Dim input, message, done, testFormatMessage
Do
good = 0
input = InputBox("Type the name:", "Name prompt-- By JM", "Type name/command here...")
message = UCase(input)
'if you hit cancel or close the window:
If message = "" Then
Exit Do
End If
'if the input contains a '%' then format the input to delete that symbol
If InStr(message, "%") > 0 Then
testFormatMessage = Format(message)
MsgBox(testFormatMessage)
End If
If input = "Type name/command here..." Then
MsgBox("You didn't type a name/command")
done - 1
End If
If done = 0 Then
MsgBox("'" & input & "' is not a recognized name/command.")
End If
Loop
Function Format(m)
m = m.Replace("%", "")
Format = m
End Function
这将正常工作,直到您的输入包含'%'。如果是,程序崩溃,导致错误状态
行: TheFirstLineOfTheFunctionNamedFormatInTheScript
错误:对象必需'm'
为什么我的函数不能接受字符串'message'作为参数来运行时替换对象'm'?我承认我处于VBScript编程的中间水平,所以如果我犯了一个愚蠢的语法错误,请不要苛刻。
提前致谢!
答案 0 :(得分:2)
没关系,感谢@KenWhite我找到了答案。正如Ken所说,字符串不是VBScript中的对象,因此它没有.Replace方法。这是一个实际可行的替换方法示例!
Function Replace(case, replaceCaseWithThis, str)
Dim obj
Set obj = new RegExp
obj.Pattern = pattern
obj.IgnoreCase = True
Replace = obj.Replace(str, replaceCaseWithThis)
End Function
现在,使用示例输出调用方法的示例。
Dim startingString, resultingString
startingString = "I am a string for testing purposes"
resultingString = Replace("string", "series of characters", startingString)
MsgBox(resultingString)
这将显示一个消息框,其中包含以下内容:
我是一系列用于测试的角色
再次感谢@KenWhite看到我的愚蠢错误,这个答案正在发布,以便这可以作为参考来源。
修改/更新:强>
感谢@Tomalak,我也看到我正在使用VBScript 方法替换,而不是函数。使用函数,代码简化为:
Replace(m, "%", "")
再次感谢@Tomalak