2017-01-16 2 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

Это было бы хорошим местом для Regex:

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

See it on Regex101.

Смежные вопросы