c# - 如何解析包含引号的字符串

标签 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);

最佳答案

这对于正则表达式来说是一个好地方:

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

See it on Regex101.

关于c# - 如何解析包含引号的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41685540/

相关文章:

c# - 针对两个不同的程序集引用编译相同的代码?

c# - Unity C#无法从迭代器返回值。使用yield return语句返回一个值,或使用yield break结束迭代

c# - 如何在 Nunit Framework 的 Autofac 容器中更新已注册类的属性

javascript - 我如何知道javascript中排序数组的名称

javascript - 单击按钮时更改文本的正确函数语法

swift - 在 Swift 中,如何修改带下标的字符串中的字符?

c# - 在 ASP .NET MVC 中选择图表库

arrays - Bash 将 curl 结果存储到数组中

c# - 在特定位置删除 char,从字符串末尾开始计算

java - 为什么 boolean 值在某些情况下可以转换为字符串,而在其他情况下则不能?