gpt4 book ai didi

c# - 用引号解析命令行参数

转载 作者:行者123 更新时间:2023-12-05 09:11:50 27 4
gpt4 key购买 nike

好的,所以我用空格吐出命令行参数,比如命令提示符,但问题是,如果用户试图输入DoStuff“有空格但被引用的参数”它不会正确拆分它。我正在使用控制台应用程序。我试过这样做:baseCommand 是用户键入的未解析的字符串,secondCommand 应该是第二个参数。

int firstQuoteIndex = baseCommand.IndexOf('"');

if (firstQuoteIndex != -1)
{
int secondQuoteIndex = baseCommand.LastIndexOf('"');
secondCommand = baseCommand.Substring(firstQuoteIndex,
secondQuoteIndex - firstQuoteIndex + 1).Replace("\"", "");
}

这很好用,但首先,它很乱,其次,如果用户输入如下内容,我不确定如何执行此操作:

DoSomething "second arg that has spaces" "third arg that has spaces"

请记住,如果 arg(s) 没有引号,用户不必输入引号。有没有人有什么建议,谢谢。

最佳答案

您可以为此目的使用以下正则表达式。

[\""].+?[\""]|[^ ]+

例如,

var commandList = Regex.Matches(baseCommand, @"[\""].+?[\""]|[^ ]+")
.Cast<Match>()
.Select(x => x.Value.Trim('"'))
.ToList();

示例 1 输入

DoSomething "second arg that has spaces" thirdArgumentWithoutSpaces

输出

Command List
------------
DoSomething
second arg that has spaces
thirdArgumentWithoutSpaces

示例 2 输入

DoSomething "second arg that has spaces" "third Argument With Spaces"

输出

Command List
------------
DoSomething
second arg that has spaces
third Argument With Spaces

关于c# - 用引号解析命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59638467/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com