2017-01-16 60 views
2

我有这样的字符串,因为您可以看到它包含由空格分隔的属性/值对。例如:GRID "GLOBAL"COORD 0如何解析包含引号的字符串

GRID "GLOBAL" LABEL "A" DIR "X" COORD 0 GRIDTYPE " " 

文本值是引号内,但数字的人都没有。

什么是最好和最快的方法将其拆分成字符串像这样的数组:

[GRID ,"GLOBAL", LABEL, "A", DIR, "X", COORD, 0, GRIDTYPE, " "] 

下面的解决方案不起作用,因为也有在后的值之间“”空间GRIDTYPE

var tokens = str.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); 

回答

2

这对正则表达式的好去处:

string[] split = Regex.Matches(inputString, "(\\w+|\".*?\")") 
         .Cast<Match>() 
         .Select(m => m.Value) 
         .ToArray(); 

See it on Regex101.