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
那么我该如何实现呢?
谢谢。
当前行为的原因是因为你在空格上分裂,所以发现它在空格上分裂不应该是一个震惊。
但是更简单的解决方法是:不要这样做。让运行时来操心吧:
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];
}
这段粗体代码带有匹配和分割空格,当它是双引号时,它将这样做。如果你发现任何问题,请回复。
谢谢阿伦