C#中的空格字符串拆分解析问题

时间:2015-10-13 03:33:53

标签: c#

我有一个像这样的字符串

cscript "E:\Data\System Test Performance\Some Tool\script.vbs" "AP_TEST" %%PARM1

我正在分裂上面的字符串

cmd.Split(' ')

预期:

cscript 
"E:\Data\System Test Performance\Some Tool\script.vbs"
"AP_TEST"
%%PARM1

但实际结果

enter image description here

4 个答案:

答案 0 :(得分:1)

字符串中有一个空格,因此您的结果符合预期。请尝试拆分报价:

var str = @"cscript ""E:\Data\System Test Performance\Some Tool\script.vbs"" ""AP_TEST"" %%PARM1";

str.Split('"').Select (s => s.Trim()).Where (s => !string.IsNullOrEmpty(s));

答案 1 :(得分:0)

您需要编写自己的分割函数,该函数支持文本限定符

在此处查看答案Split String in C#

或者这篇文章http://www.codeproject.com/Articles/15361/Split-Function-that-Supports-Text-Qualifiers

答案 2 :(得分:0)

这可能会为你做到这一点

string[] newinp = Regex.Split(inp, "(?=\")").Where(x => !string.IsNullOrEmpty(x)).ToArray();

答案 3 :(得分:0)

您的E:\ Data \ System Test Performance \ Some Tool \ script.vbs(文件位置)中有太多空格,这就是您获取错误数组的原因。

你可以做两件事

1)制作不包含空格的目录 2)修改代码

string[] final=new string[4];
final[0]=cmdLinesplit[0];
final[2]=cmdLinesplit[cmdLinesplit.Length-2];
final[3]=cmdLinesplit[cmdLinesplit.Length-1];
for(int i=1;i< cmdLinesplit.Length-2;i++)
{
    final[1] +=cmdLinesplit[i]+" ";
}
final[1].Trim();