c#用“异常分割字符串
Posted
技术标签:
【中文标题】c#用“异常分割字符串【英文标题】:c# split string with " exception [duplicate] 【发布时间】:2014-08-22 01:33:37 【问题描述】:我想将一个字符串拆分为多个部分,以检索参数。
我已经做了那个功能:
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”作为第二个参数并拆分它们。
现在我想在 Split-Function 中创建类似异常的东西: 当参数在引号之间给出时,它应该忽略其中的空格。
然后,当我像这样传递 arg 时: 上传“C:\Visual Studio”,第一个参数应该是C:\Visual Studio
那么我该如何实现呢?
谢谢。
【问题讨论】:
***.com/questions/491595/… 您是否尝试解析传递给控制台应用程序的参数? 【参考方案1】:当前行为的原因是因为你在空间上分裂,所以发现它在空间上分裂应该不会感到震惊。
但更简单的解决方法是:不要这样做。让运行时担心它:
static void Main(string[] args) ...
工作完成;所有已准备好解析为符合预期规则的单独标记。
【讨论】:
或者你可以使用``` Environment.GetCommandLineArgs() ``` 我想从在线网站发出命令。而且我的应用不是命令行应用。【参考方案2】:“我想从在线网站发出命令。而我的应用程序不是命令行应用程序”
您可以使用正则表达式。
string[] arrparams = Regex.Matches(input, @"\""(?<token>.+?)\""|(?<token>[^\s]+)")
.Cast<Match>()
.Select(m => m.Groups["token"].Value)
.ToArray();
【讨论】:
哇!这个有效。谢谢老哥!【参考方案3】:您可以使用 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];
这个粗体代码匹配并分割一个空格,当它是双引号时,它会这样。 如果您发现任何问题,请回帖。
谢谢 阿伦
【讨论】:
@"[^\\s\"']+|\"([^\"]*)\"";
不是一个可编译的字符串.. 如果你的意思是"[^\\s\"']+|\"([^\"]*)\""
它不起作用......以上是关于c#用“异常分割字符串的主要内容,如果未能解决你的问题,请参考以下文章