c#拆分字符串"例外

本文关键字:例外 quot 拆分 字符串 | 更新日期: 2023-09-27 18:10:54

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

我已经创建了这个函数:

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-Function中做一个异常:当参数在引号之间给出时,它应该忽略其中的空格。

然后,当我像这样传递参数时:上传"C:'Visual Studio",第一个参数应该是C:'Visual Studio

那么我该如何实现呢?

谢谢。

c#拆分字符串"例外

当前行为的原因是因为你在空格上分裂,所以发现它在空格上分裂不应该是一个震惊。

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

static void Main(string[] args) { ... }

和工作完成;

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

你可以使用Regex

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

您可以使用正则表达式来完成此操作。分裂方法。

你的代码应该修改为
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];
}

这段粗体代码带有匹配和分割空格,当它是双引号时,它将这样做。如果你发现任何问题,请回复。

谢谢阿伦