C# c带“异常”的拆分字符串

C# c带“异常”的拆分字符串,c#,split,arguments,C#,Split,Arguments,我想把一个字符串分成几个部分,以检索参数 我已经完成了这个功能: static private string getparam(string input, int index) { string[] arrparams = input.Split(' '); if (arrparams.Length <= index) return ""; return arrparams[index]; } 但是当我通过一个论点,比如

我想把一个字符串分成几个部分,以检索参数

我已经完成了这个功能:

static private string getparam(string input, int index)
    {
        string[] arrparams = input.Split(' ');

        if (arrparams.Length <= index) return "";

        return arrparams[index];
    }
但是当我通过一个论点,比如:

上载C:\Visual Studio

它将看到C:\Visual作为第一个参数,Studio作为第二个参数并拆分em

现在我考虑在Split函数中创建一个类似于异常的东西: 当参数在引号之间给出时,它应该忽略其中的空格

然后,当我像这样通过arg时: 上载C:\Visual Studio,第一个参数应为C:\Visual Studio

那么我该如何实现这一点呢


谢谢。

当前行为的原因是因为您在空间上分裂,因此发现它在空间上分裂应该不会令人震惊

但更简单的解决方法是:不要这样做。让运行时担心它:

static void Main(string[] args) { ... }
工作完成;所有准备好的代码都被解析成单独的标记,遵守预期的规则。

您可以使用regex.split方法来完成这项工作

您的代码应该修改为

using System;
using System.Text.RegularExpressions;
static private string getparam(string input, int index)
{
   <b>string pattern = @"[^\\s\"']+|\"([^\"]*)\"";
   string[] arrparams = Regex.Split(input,pattern);</b>
   if (arrparams.Length <= index) return "";
   return arrparams[index];
}
这段粗体代码使用match和split分隔一个空格,当它是双引号时,它将采用这样的方式。 如果发现任何问题,请发回

谢谢 阿伦


我想从一个在线网站上发布命令。我的应用程序不是命令行应用程序

你可以使用正则表达式

string[] arrparams = Regex.Matches(input, @"\""(?<token>.+?)\""|(?<token>[^\s]+)")
                    .Cast<Match>()
                    .Select(m => m.Groups["token"].Value)
                    .ToArray();

您正在尝试解析传递给控制台应用程序的参数吗?或者您可以使用“``Environment.GetCommandLineArgs``我想从在线网站发出命令。我的应用程序不是命令行应用程序。@[^\\s\']+\[^\]*\\\\[^\]*\\\\\\\[^\]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\!