我想将一个字符串传递给main,但是我遇到了空格问题。
我将字符串"C:\Documents and Settings\desktop\..."
传递给Main(string[] args)
,我有:
args[0] = "C:\Documents"
args[1] = "and"
args[2] = "Settings\desktop\..."
但我想要的是:
args[0] = "C:\Documents and Settings\desktop\..."
任何保留空格但连接到字符串的一个元素的方法?代码也应该适用于给定文件路径中的任意数量的空格,在这种情况下不仅仅是2。
答案 0 :(得分:2)
这通常通过在引号中传递参数来处理。
例如,如果您将其称为:
yourApp.exe "C:\Documents and Settings\desktop..."
您将在第一个arg(args[0]
)中获取字符串。
例如,使用此程序:
using System;
internal class Program
{
private static void Main(string[] args)
{
foreach (var arg in args) Console.WriteLine(arg);
Console.ReadKey();
}
}
如果使用命令行参数:
运行它"C:\Documents and Settings\desktop..."
(使用引号),这将打印:
C:\ Documents and Settings \ desktop ...
如果这不是一个选项,并且您只有一个参数,则可以随时加入结果:
using System;
internal class Program
{
private static void Main(string[] args)
{
string argument = String.Join(" ", args);
Console.WriteLine(argument);
Console.ReadKey();
}
}
这可以在不用引号括起路径的情况下工作,但它假定整个路径是单个路径,“单词”之间只有一个空格,并且没有其他参数。就个人而言,我建议用引号括起来,因为这是一个标准惯例。
答案 1 :(得分:1)
从命令行调用程序时,不能只引用字符串吗?
示例:myprog "This is one argument"
namespace test
{
class Program
{
/*
* EXAMPLE: test arg1 "arg2 with spaces" arg3
* args[0]=arg1...
* args[1]=arg2 with spaces...
* args[2]=arg3...
*/
static void Main(string[] args)
{
for (int i = 0; i < args.Length; i++)
System.Console.WriteLine("args[{0}]={1}...", i, args[i]);
}
}
}