c# – 拆分一个有空格的字符串,除非它们包含在“quotes”中。

为了简单:

string streamR = sr.ReadLine();  // sr.Readline results in one "two two"

我想能够将它们保存为两个不同的字符串,删除所有空格除了引号之间找到的空格。因此,我需要的是:

string 1 = one
string 2 = two two

到目前为止,我发现工作是下面的代码,但它删除引号内的空格。

//streamR.ReadLine only has two strings
  string[] splitter = streamR.Split(' ');
    str1 = splitter[0];
    // Only set str2 if the length is >1
    str2 = splitter.Length > 1 ? splitter[1] : string.Empty;

这个输出变成了

one
two

我已经查看了Regular Expression to split on spaces unless in quotes,但是我似乎不能得到正则表达式工作/理解代码,尤其是如何拆分他们是两个不同的字符串。所有的代码给我一个编译错误(我使用System.Text.RegularExpressions)

string input = "one \"two two\" three \"four four\" five six";
var parts = Regex.Matches(input, @"[\""].+?[\""]|[^ ]+")
                .Cast<Match>()
                .Select(m => m.Value)
                .ToList();
http://stackoverflow.com/questions/14655023/split-a-string-that-has-white-spaces-unless-they-are-enclosed-within-quotes

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – 拆分一个有空格的字符串,除非它们包含在“quotes”中。