2013-10-04 4 views
1

У меня есть одна строка, какRegex строка замены в C#

var input = "data1, data2, 1233456, \"\"\" test, data, here \"\"\", 08976, test data" 

Я хочу, чтобы заменить \"\"\" test, data, here \"\"\" часть этой строки с test; data; here

Простыми словами заменить запятой ',' с semincolon ';' любой строки внутри \"\"\" блока только ,

Я пытаюсь сделать это с помощью регулярного выражения.

Я пытаюсь использовать следующее регулярное выражение - \[\\\\\"](.+)[\\\\\"]

+2

Вперед и добавьте свои неудачные попытки кода на ваш вопрос. Это не сделает вопрос более ясным, но это может позволить людям указать на небольшое заблуждение, которое у вас может быть ... и это также заставляет людей гораздо чаще отвечать на вопрос (странно, но верно.) – Beska

+2

Как @Beska говорит ... люди с большей вероятностью помогут, если они знают, что вы пробовали. Проводка вашего кода показывает, что – Rob

ответ

2

Просто для справки, если вы хотите, решение, не регулярное выражение для сравнения, вы можете сделать это с помощью LINQ, а также:

input= string.Join("\"\"\"", 
     input.Split(new []{"\"\"\""}, StringSplitOptions.None) 
     .Select((s,i) => i % 2 == 1 ? s.Replace (',', ';') : s) 
     ); 
+0

Спасибо за вашу помощь, но мне удалось сделать это с помощью регулярного выражения. –

0

Я дону «т думаю, что это можно сделать с помощью регулярных выражений для этой строки:
data1, 1233456, """ test, data, here """, 08976, test, """ second, data """, aso

это возможно:
data1, 1233456, < test, data, here >, 08976, test, < second, data >, aso

, но не "ххх"

картина: \"{3}.*\"{3}
соответствия Еогеасп регулярное выражение это шаблон string.replace ('', ';')

, но я пытаюсь сделать регулярное выражение. ..
и я сдаюсь:/

+0

Пожалуйста, проверьте мой ответ, возможно –

+0

да, но это не регулярное выражение – oobe

1

спасибо парня за помощью,

ваших ответов были полезны.

Наконец удалось сделать это с помощью следующего кода с помощью this link

//My input string 
var input = Regex.Replace(input , "[\\\"](.+)[\\\"]", ReplaceMethod); 


//Method used to replace 
public static string ReplaceMethod(Match m) 
    { 
     string newValue = m.Value; 
     return newValue.Replace("\"", "").Replace(",", ";"); 
    } 
0

Следующий код может удовлетворить требование ...

выход вар = Regex.Replace (вход, "(? < = \" \ "\". +), (? =. + \ "\" \ ")", ";");

+0

спасибо, я попробую этот код –

+0

Я не думаю, что это можно сделать с помощью регулярного выражения для этой строки: 'data1, 1233456, «« test, data, here »« », 08976, test,« »« second, data »« », aso' – oobe

+0

не работает для ввода! –

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