如何解析包含引号的单词串

时间:2017-01-16 21:48:54

标签: c# arrays string parsing split

我有一个这样的字符串,因为你可以看到它由空格分隔的属性/值对组成。例如:GRID "GLOBAL"COORD 0

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

TEXT值在引号内,但NUMERICAL值不在。

将它分割成如下字符串数组的最佳和最快方法是什么:

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

以下解决方案不起作用,因为GRIDTYPE之后的值中的“”之间也有空格。

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

1 个答案:

答案 0 :(得分:2)

这对Regex来说是一个好地方:

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

See it on Regex101.