2015-09-03 2 views
-1

У меня точка с запятой разделяет строку, содержащую значения каждого типа. значения строк и даты указаны в котировках.Как заменить знаки в кавычках в строке

Теперь у меня есть злая строка, где внутренняя строка содержит точку с запятой, которую мне нужно удалить (заменить ничем).

например:

"Значение1"; 0; "значение2", 4711; "Зло, Value", "2015-09-03"

в C#:

string value = "\"Value1\";0;\"Value2\";4711;\"Evil; Value\";\"2015-09-03\"" 

Итак, как заменить все точки с запятой, которые указаны в котировках? может кто-нибудь помочь?

+0

Эй, ребята, я не могу прочитать ответ. Пожалуйста, внимательно прочитайте мое сообщение! Я НЕ!! У меня есть файл, у меня есть строка! Так скажите мне, как это сделать с помощью TextFieldParser ??? – Dosihris

+0

Правильный ответ! Откройте эту тему еще раз, чтобы отправить ее кому-нибудь еще! StringBuilder builder = новый StringBuilder (textBox1.Text); foreach (Match m в Regex.Matches (builder.ToString(), "\". *? \ "")) { if (m.Value.Contains (";")) // Если он содержит точка с запятой { строка temp = m.Value.Replace (";", ""); builder.Replace (m.Value, temp); } } var parts = builder.ToString(). Split (новый char [] {';'}); – Dosihris

ответ

-1

Вы должны попробовать это, чтобы соответствовать то есть только те, которые с запятой не предшествуют ::

(?<=[^"]); 

Вот demo

+0

Где точка с запятой, которой предшествует двоеточие? –

+0

И демо работает не так, –

+0

@ThomasWeller, в чем проблема, он хотел заменить ';' inside '' ' –

1

Regex является ужасно при обработке строк с разделителями. Он может это сделать, но это не так хорошо, как выбор. Это одна из причин.

Вместо этого вы должны использовать выделенный разделительный синтаксический анализатор строк. Есть (по крайней мере) три встроенных в .Net framework. Тип TextFieldParser является одним из таких, и он будет обрабатывать это правильно.

+0

Интересно. Интересно, как я раньше этого не видел. Я предполагаю, что это часть Microsoft.VisualBasic.dll. Хм ... любопытно. – aquinas

+0

Это часть пространства имен по соображениям совместимости, но отлично работает с C#. –

+0

Он может обрабатывать только файлы, простые строки! – Dosihris

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