构建带参数的控制台应用程序时,可以使用传递给的参数Main(string[] args).
在过去,我只是索引/循环该数组并完成一些正则表达式来提取值.但是,当命令变得更复杂时,解析会非常难看.
所以我对以下内容感兴趣:
假设命令始终遵循通用标准,例如此处的答案.
我有一个字符串,其中包含要传递给另一个可执行文件的命令行参数,我需要提取包含各个参数的字符串[],方法与在命令行中指定命令时C#相同.通过反射执行另一个程序集入口点时将使用字符串[].
这有标准功能吗?或者是否有正确分割参数的首选方法(正则表达式?)?它必须处理'''可能正确包含空格的分隔字符串,所以我不能只拆分''.
示例字符串:
string parameterString = @"/src:""C:\tmp\Some Folder\Sub Folder"" /users:""abcdefg@hijkl.com"" tasks:""SomeTask,Some Other Task"" -someParam foo";
Run Code Online (Sandbox Code Playgroud)
示例结果:
string[] parameterArray = new string[] {
@"/src:C:\tmp\Some Folder\Sub Folder",
@"/users:abcdefg@hijkl.com",
@"tasks:SomeTask,Some Other Task",
@"-someParam",
@"foo"
};
Run Code Online (Sandbox Code Playgroud)
我不需要命令行解析库,只需要获取应生成的String [].
更新:我必须更改预期结果以匹配C#实际生成的内容(删除了拆分字符串中的额外")
我正在寻找一个常规的exression匹配空格,只有当thos空格没有用双引号(")括起来时.例如,在
Mary had "a little lamb"
Run Code Online (Sandbox Code Playgroud)
它应该匹配第一个和第二个空间,而不是其他空间.
我想将字符串仅拆分在不在双引号中的空格处,而不是在引号处.
我正在使用C++与Qt工具包,并希望使用QString :: split(QRegExp).QString与std :: string非常相似,而QRegExp基本上是封装在类中的POSIX正则表达式.如果存在这样的正则表达式,那么拆分将是微不足道的.
例子:
Mary had "a little lamb" => Mary,had,"a little lamb"
1" 2 "3 => 1" 2 "3 (no splitting at ")
abc def="g h i" "j k" = 12 => abc,def="g h i","j k",=,12
Run Code Online (Sandbox Code Playgroud)
对于编辑很抱歉,当我首先提出问题时,我非常不精确.希望现在更加清晰.