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\']+\[^\]*\\\\[^\]*\\\\\\\[^\]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\!