【发布时间】:2013-01-17 06:43:45
【问题描述】:
为了简单起见:
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)
【问题讨论】:
-
为此编写自己的解析器可能会更容易 - 正则表达式不适合这种逻辑。
-
什么编译错误?错误信息是什么?在哪一行?
-
错误 1 找不到源类型“System.Text.RegularExpressions.MatchCollection”的查询模式的实现。未找到“演员表”。您是否缺少对“System.Core.dll”的引用或“System.Linq”的 using 指令?
-
string.split 完美地执行了我想要的,除了我的报价问题