Как проверить, является ли Parse (args) истинным или ложным - PullRequest
0 голосов
/ 18 марта 2019

У меня есть код, который не выдает никакой ошибки. Я использовал набор опций NDesk и добавил 2 строковых параметра. Я вижу, что он вытащил правильные имена в аргументах. Но когда я использую parse (args), это не выдает ошибку. Поэтому я предполагаю, что это работает.

Я пытаюсь проверить, является ли p (args) истинным или ложным Но я не могу использовать выражения bool для List<string>.

Любая помощь, как я могу это сделать. Я хочу выполнить функцию, если анализ имеет правильные аргументы.

Мой код такой

private static Regex fileNamePattern = new Regex(@"^[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}[.]pdf$", RegexOptions.Compiled | RegexOptions.IgnoreCase); 

//missing method name
{
    string inputFile;
    string outputFile;
    var p = new OptionSet() {
        {"i"," pdf file",v=>inputFile=v},{"o","index file with kws",v=>outputFile=v},
    };

    Console.WriteLine($"args length: {args.Length}");
    Console.WriteLine($"args 0: {args[0]}");
    Console.WriteLine($"args 1: {args[1]}");

    p.Parse(args); //I would like to use this if(parse(args))
    {

    }
    // 
}

private static void UpdateImportIndexFile(string inputFile, string outputFile)
{
    using (var dip = File.CreateText(outputFile))
    {
        var match = fileNamePattern.Match(Path.GetFileName(MainFilePath));
        if (match.Success)
        {
            //create text file (outputfile);
        }
    }
}

1 Ответ

2 голосов
/ 18 марта 2019

Так как p является экземпляром класса, а метод parse не поддерживает возврат для эмуляции в некотором смысле функциональности TryParse обертывания вашего анализа в try блоке

try{
  val = p.Parse(args);
}catch(OptionException e){
  //if false
}

Для получения дополнительной информации http://www.ndesk.org/doc/ndesk-options/NDesk.Options/OptionSet.html#M:NDesk.Options.OptionSet.Parse(System.Collections.Generic.IEnumerable{System.String})

...