我有一个这样的字符串:
string subjectString = "one two \"three four\" five \"six seven\"";
我希望将它转换为StringCollection,如下所示:
有没有办法如何使用asp.net C#2.0中的Regex类实现这一点,不知何故这样?
string subjectString = "one two \"three four\" five \"six seven\"";
System.Collections.Specialized.StringCollection stringCollection = new System.Collections.Specialized.StringCollection();
foreach (System.Text.RegularExpressions.Match match in System.Text.RegularExpressions.Regex.Matches(subjectString, "some_regex_here"))
{
stringCollection.Add(match.Value);
}
答案 0 :(得分:3)
您所拥有的是使用空格作为分隔符的CSV,因此您只需使用CSV parser:
var subjectString = "one two \"three four\" five \"six seven\"";
using (var csvReader = CsvReader.FromCsvString(subjectString))
{
csvReader.ValueSeparator = ' ';
csvReader.ValueDelimiter = '"';
while (csvReader.HasMoreRecords)
{
var record = csvReader.ReadDataRecord();
Console.WriteLine(record[2]);
}
}
输出为“三四”。
答案 1 :(得分:0)
我只能提出以下正则表达式模式:
(?:"(.+?)")|(\w+?)(?:\s|$)
这不完美。懒得测试所有类型的字符串组合,但我尝试在你的字符串上应用模式,它返回的结果与你的预期完全一样。
P / S:我只使用RegexBuddy测试,而不是.Net代码。