【问题标题】:Parse paths ending with "\" with CommandLineParser?使用 CommandLineParser 解析以“\”结尾的路径?
【发布时间】:2015-02-20 22:37:08
【问题描述】:

在 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);

编辑:我正在使用Command Line Parser Library

【问题讨论】:

  • 为什么会出现这个问题?
  • 路径是一个字符串,因此它会在调试器中显示为quoted text " " 您在这里面临或遇到的真正问题是什么......?
  • 这是哪个“CommandLineParser”类?
  • 你上面的例子显示了一个转义的双引号?
  • @JohnSaunders 好像是Command Line Parser Library

标签: c# path arguments directory command-line-parser


【解决方案1】:

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

TL;DR

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-19
    • 2017-04-09
    • 1970-01-01
    • 2016-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多