Принудительное указание c. NET типов в JScript. NET? - PullRequest
1 голос
/ 13 марта 2020

Я использую веб-отладчик Fiddler, который использует FiddlerScript , основанный на JScript. NET. Я пытаюсь сделать несколько простых. 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] + "\"");
        }

enter image description here

String.Split имеет следующие прототипы:

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

Even если я добавляю Int32 и запускаю его как ahraw.Split([',', ' '], 99, System.StringSplitOptions.RemoveEmptyEntries); или ahraw.Split(", ", 99, System.StringSplitOptions.RemoveEmptyEntries);, он все равно находит несколько методов. Можно ли принудительно указать тип c. NET? Что-то вроде var sep: String тоже не работает.

Конечно, есть и другие способы разделения строки в JScript, такие как split () (обратите внимание на строчные буквы s). Меня больше интересует, как я могу обойти эту проблему, когда нет эквивалента javascript для функции, которую мне нужно вызвать, поэтому я должен вызвать функцию. NET.

1 Ответ

1 голос
/ 28 марта 2020

Как упоминалось в комментариях, в наши дни, вероятно, было бы проще использовать C# в качестве языка сценариев (может быть установлен в Tools -> Options -> Scripting -> Language).

Если вы, тем не менее, хотите / хотите придерживаться JScript. NET (например, если у вас уже есть сложные настройки), вы можете обойти эту проблему, объявив типизированный массив для разделителей, в противном случае компилятор не может различить guish, какую из перегрузок 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] + "\"");
    }
...