1

在 C# 中,我解析以 '\' 结尾的路径,如下所示:-p "C:\My Folder\"。问题是,在解析时我得到 C:\My Folder" (带有最终报价),而不仅仅是 C:\My Folder。有没有办法避免这个问题?我已经尝试过使用 CommandLineParser 和 NDesk.Options ,最终都遇到了同样的问题...

选项类:

    class Options
{
    [Option('p', "path", Required = false)]
    public string parsedPath { get; set; }

    [Option('f', "file", Required = false)]
    public string parsedFile { get; set; }

    [Option('l', "label", Required = false)]
    public string parsedLabel { get; set; }

    [Option('t', "torrent", DefaultValue = false)]
    public bool isTorrent { get; set; }
}

代码实现:

var options = new Options();
CommandLine.Parser parser = new CommandLine.Parser();
parser.ParseArguments(args, options);

编辑:我正在使用命令行解析器库

4

1 回答 1

0

您必须转义反斜杠: -p "C:\My Folder\\"

TL;博士

转义 M ( \M) 不会转义,但转义引号 ( \") 会。唉,发生的事情是您试图将引号转义为生成 ( C:\My Folder") 的字符串的一部分。我完全可以理解为什么会发生这种情况,但这有点不直观。
我偶然发现了相同的,但从相反的方向。我的参数是,-myPath C:\what ever\ --verbose但这导致 MyPath 是C:\what. 所以我添加了引号-myPath "C:\what ever\" --verbose,MyPath 变成了C:\what ever" --verbose.

于 2022-01-08T21:35:01.373 回答