如何对 C# 控制台参数使用单引号而不是双引号?
How to use single quotes instead of doublequotes for C# console params?
在 C#.NET 控制台应用程序中,Main
所采用的 string[] args
已经处理了用双引号引起来的参数;例如,以下命令行:
MyProgram.exe A "B C D" E
... 将导致 args
中只有 3 个条目。但是,当改为使用单引号时:
MyProgram.exe A 'B C D' E
... 那么 args
将有 5 个条目。单引号没有把 B C D
变成一个参数。
是否有办法让 .NET 也将单引号视为有效的命令行参数引号字符,或者这是否需要特殊的命令行参数解析库?
您可以通过
访问整条线路
Environment.CommandLine
并手动处理单引号
仅提取 CommandArg-Line 的一种方法可能是:
private static string getCommandLineArgLine()
{
string fullCommandLine = Environment.CommandLine;
int applicationDoubleQuoteEnds = fullCommandLine.IndexOf("\"", 1, StringComparison.InvariantCulture);
string commandArgLine = fullCommandLine.Substring(applicationDoubleQuoteEnds + 1).TrimStart();
return commandArgLine;
}
提示:如果启用了 vs-host 进程,请不要在调试环境中使用 System.Reflection.Assembly.GetExecutingAssembly().Location
- 在这种情况下 return 将不会位于正确的位置(这就是为什么我阅读了最后一个“)
在 C#.NET 控制台应用程序中,Main
所采用的 string[] args
已经处理了用双引号引起来的参数;例如,以下命令行:
MyProgram.exe A "B C D" E
... 将导致 args
中只有 3 个条目。但是,当改为使用单引号时:
MyProgram.exe A 'B C D' E
... 那么 args
将有 5 个条目。单引号没有把 B C D
变成一个参数。
是否有办法让 .NET 也将单引号视为有效的命令行参数引号字符,或者这是否需要特殊的命令行参数解析库?
您可以通过
访问整条线路 Environment.CommandLine
并手动处理单引号
仅提取 CommandArg-Line 的一种方法可能是:
private static string getCommandLineArgLine()
{
string fullCommandLine = Environment.CommandLine;
int applicationDoubleQuoteEnds = fullCommandLine.IndexOf("\"", 1, StringComparison.InvariantCulture);
string commandArgLine = fullCommandLine.Substring(applicationDoubleQuoteEnds + 1).TrimStart();
return commandArgLine;
}
提示:如果启用了 vs-host 进程,请不要在调试环境中使用 System.Reflection.Assembly.GetExecutingAssembly().Location
- 在这种情况下 return 将不会位于正确的位置(这就是为什么我阅读了最后一个“)