我有一个像这样的字符串
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
但实际结果
答案 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();