2012-03-23 5 views
0

У меня есть следующая строка (двойные кавычки являются частью строки):Regex разбить строку на несколько разделителей с цитатами

"abc def ghi" "%1" "%2" 

Так строка начинается с двойной кавычки, каждый сегмент отделен " " и строка заканчивается двойной цитатой. Я хотел бы разделить это на:

abc def ghi 
%1 
%2 

Я попробовал следующее: "(^\")|(\" \")|(\"$)", но это не дает мне желаемого результата.

ответ

3

Не усложняют его. Просто используйте строковое раскол:

 string test = "\"abc def ghi\" \"%1\" \"%2\""; 
     var splits = test.Split(new string[]{"\" \"","\""},StringSplitOptions.RemoveEmptyEntries); 
     foreach (var split in splits) 
     { 
      Console.WriteLine(split); 
     } 

(удаляет лишние пустые/записи, а)

+0

Лучше, чем мой ответ, понравилось. – daryal

+0

Точно результат я хочу :) Спасибо. –

2
Regex regex = new Regex("\"(.*?)\""); 

Результаты:

http://rubular.com/r/lXbDIpkRRQ

+0

Это ваш ответ, используя 'Regex'. Ницца :]. – MoonKnight

+1

Это работает, но результатом является массив из 7 строк: '[" "," abc def ghi "," ","% 1 "," ","% 2 "," "]'. Я бы хотел получить результат с тремя строками. –

1
string s = "\"abc def ghi\" \"%1\" \"%2\""; 
string[] splittedStrings = s.Split('"'); 
string a = splittedStrings[1]; 
string b = splittedStrings[3]; 
string c = splittedStrings[5]; 
+1

Как это, потому что это очень простое решение. Тем не менее, я хочу получить результат, который содержит только 3 строки, а не 7 ... –

+0

@ RonaldWildenberg - Посмотрите на мою вариацию раскола. – manojlds

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