字符串编辑功能

时间:2014-12-26 19:25:32

标签: string replace vbscript

我有一种情况,我调用一个带一个参数(一个字符串)的函数。出于某种原因,我的代码不接受我给它的字符串变量,并给我一个错误。我是否犯了一些愚蠢的语法错误?这是简化的代码框架:

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编程的中间水平,所以如果我犯了一个愚蠢的语法错误,请不要苛刻。

提前致谢!

1 个答案:

答案 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