1

我正在使用 Fiddler Web 调试器,它使用基于 JScript.NET 的FiddlerScript 。我正在尝试进行一些简单的 .NET 字符串解析,但它失败并出现错误“多个方法或属性与此参数列表匹配”。例如:

        var ahraw: String = "one, two, three, four";
        var ah: Array = ahraw.Split([',', ' '], System.StringSplitOptions.RemoveEmptyEntries);
        for (var i in ah) {
            FiddlerObject.alert("\"" + ah[i] + "\"");
        }

在此处输入图像描述

String.Split有以下原型:

Split(Char[], Int32, StringSplitOptions)
Split(String[], Int32, StringSplitOptions)
Split(String[], StringSplitOptions)
Split(Char[], StringSplitOptions)
Split(Char[], Int32)
Split(Char[])

即使我添加一个 Int32 并像运行它一样ahraw.Split([',', ' '], 99, System.StringSplitOptions.RemoveEmptyEntries);ahraw.Split(", ", 99, System.StringSplitOptions.RemoveEmptyEntries);它仍然会找到多种方法。是否可以强制使用特定的 .NET 类型?类似的东西var sep: String也不起作用。

当然,还有其他方法可以在 JScript 中拆分字符串,例如 split()(注意小写的 s)。当我需要调用的函数没有等效的 javascript 时,我对如何解决这个问题更感兴趣,所以我必须调用 .NET 函数。

4

1 回答 1

1

正如评论中所提到的,现在使用 C# 作为脚本语言可能会更容易(可以在 中设置Tools -> Options -> Scripting -> Language)。

但是,如果您有/想要坚持使用 JScript.NET(例如,如果您已经进行了复杂的自定义),您可以通过为分隔符声明类型化数组来解决该问题,否则编译器无法区分调用哪个Split(String[], StringSplitOptions)Split(Char[], StringSplitOptions)重载。

    var ahraw: String = "one, two, three, four";
    var separators: Char[] = [',', ' '];
    var ah: Array = ahraw.Split(separators, System.StringSplitOptions.RemoveEmptyEntries);
    for (var i in ah) {
        FiddlerObject.alert("\"" + ah[i] + "\"");
    }
于 2020-03-28T17:09:25.110 回答