如何使 args 类型的变量将引号或字符串作为参数?
How would I make a variable of type args take a quote or string as an argument among others?
当我通过 CMD 运行 我的代码时,消息被发送到:
void Main(string[]args)
如果每个人在 visual studio 上使用 C#,他们都会这样做。但是,当您 运行 来自 CMD 的代码并键入一条消息时。看来参数可以接受一条消息,例如:
您可以在不使用 Split 函数的情况下将引用的文本视为一个字符串,而是使用 Regex。
以下面的片段为例:
// In your case just read from the textBox for input
string input = "cars \"testing string\"";
// This code will split the input string along spaces,
// while keeping quoted strings together
string[] tmp = Regex.Split(input,
"(?<=^[^\"]*(?:\"[^\"]*\"[^\"]*)*) (?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");
// Now must remove the quotes from the Regex'd string
string[] args = tmp.Select(str => str.Replace("\"", "")).ToArray();
// Now when printing the arguments, they are correctly split
for (int i = 0; i < args.Length; i++)
{
Console.WriteLine("args[" + i + "]:'" + args[i] + "'");
}
我在 this link 找到了您需要的特定正则表达式字符串,这里是堆栈溢出。
当我通过 CMD 运行 我的代码时,消息被发送到:
void Main(string[]args)
如果每个人在 visual studio 上使用 C#,他们都会这样做。但是,当您 运行 来自 CMD 的代码并键入一条消息时。看来参数可以接受一条消息,例如:
您可以在不使用 Split 函数的情况下将引用的文本视为一个字符串,而是使用 Regex。 以下面的片段为例:
// In your case just read from the textBox for input
string input = "cars \"testing string\"";
// This code will split the input string along spaces,
// while keeping quoted strings together
string[] tmp = Regex.Split(input,
"(?<=^[^\"]*(?:\"[^\"]*\"[^\"]*)*) (?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");
// Now must remove the quotes from the Regex'd string
string[] args = tmp.Select(str => str.Replace("\"", "")).ToArray();
// Now when printing the arguments, they are correctly split
for (int i = 0; i < args.Length; i++)
{
Console.WriteLine("args[" + i + "]:'" + args[i] + "'");
}
我在 this link 找到了您需要的特定正则表达式字符串,这里是堆栈溢出。