2015-07-15 3 views
-3

Мне нужно разделить следующую строку запятой и получить куски внизу. Какое самое элегантное решение в C#? String.Split() обнаруживает также внутренние запятые, конечно.Как отделить запятую эту строку?

"'_82X5_00_11 (2,RAL 7035)', '_82X5_00_11 (2,RAL 7035)', #349, #1 " 

Результат должен быть:

'_82X5_00_11 (2,RAL 7035)' 
'_82X5_00_11 (2,RAL 7035)' 
#349 
#1 

Спасибо.

+0

есть всегда символ пробела после запятой вы хотите разделить на? – user1666620

+1

рассматривают его как данные csv и сообщают парсеру csv, что поля заключены в '' '. –

ответ

0

Попробуйте это:

string aux = "'_82X5_00_11 (2,RAL 7035)', '_82X5_00_11 (2,RAL 7035)', #349, #1 "; 
var result = Regex.Split(aux, ("(?!\\B'[^']*),(?![^']*'\\B)")); 

EDIT

Это не получение " '', '' ", потому что '' не содержит ничего.

Решение:

string pattern = "('[^']+'|[^',^\\s]+|['']+)"; 
string str1 = "'_82X5_00_11 (2,RAL 7035)', '_82X5_00_11 (2,RAL 7035)', #349, #1 "; 
string str2 = "'', '', #344, #334"; 
var result1 = Regex.Matches(str1, pattern).Cast<Match>().Select(x => x.Value).ToArray(); 
var result2 = Regex.Matches(str2, pattern).Cast<Match>().Select(x => x.Value).ToArray(); 
+0

Он не работает для следующей строки: '' '', '', # 344, # 334 "'. Он возвращает 3 куска вместо 4. Знаете ли вы, почему? – abenci

+0

Ничего себе из-за '', '' ничего не получается между 'char –

+0

@Alberto Добавлено решение –

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