gpt4 book ai didi

c# - 我如何像 Environment.GetCommandLineArgs() 那样解析命令行参数?

转载 作者:行者123 更新时间:2023-11-30 13:06:53 25 4
gpt4 key购买 nike

我正在阅读使用 COM“Windows 脚本主机对象模型”IWshRuntimeLibrary 的快捷方式,如下所示:

IWshShell wsh = new WshShellClass();
IWshShortcut sc = (IWshShortcut)wsh.CreateShortcut(shortcutFile);
string arguments = sc.Arguments;

这给了我快捷方式的参数,说它看起来像:

-a "c:\temp\a 1.txt" -b "b.exe -c \"c:\temp\c -2.txt\" -d d.txt" -e test

这并不像您想象的那样是一个人为的例子......我怎样才能像 GetCommandLineArgs 那样做并得到:

args {string[6]}
[0] = "-a"
[1] = "c:\\temp\\a 1.txt"
[2] = "-b"
[3] = "b.exe -c \"c:\\temp\\c -2.txt\" -d d.txt"
[4] = "-e"
[5] = "test"

我在考虑正则表达式,但这超出了我的范围。

[edit] 我更喜欢正则表达式,但我会查看提到的代码和类。

规则似乎是:

  • 拆分空格,
  • 除非空格在双引号 (") 内。
  • 双引号内的字符串可以包含用反斜杠 (\") 转义的双引号。
  • 其他反斜杠可能会单独出现,但应视为普通字符

前两个代码部分中的参数和数组将是一个合适的测试。

[编辑] https://stackoverflow.com/a/749653/350188已经回答了我的问题。它调用 native 系统函数并给我与 GetCommandLineArgs() 完全相同的结果:

string[] splitArguments = CommandLineToArgs(arguments);

最佳答案

这并没有什么特别棘手的。您可以使用基本的 C# 语法来检查各个字符是否解析出您需要的内容。

例如,您可以String.IndexOf() 来定位您要查找的特定字符。您可以使用 String.Substring() 提取字符串的一部分。

我在文章 A C# Command-Line Parser 中发布了我解析命令行的代码.

关于c# - 我如何像 Environment.GetCommandLineArgs() 那样解析命令行参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14961045/

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