2015-11-14 3 views
4

Я хочу удалить все двойные кавычки, используя регулярное выражение в CSV-файле , если это произойдет между двойными кавычками. В настоящее время я использую следующее регулярное выражение, чтобы сделать это: только из цифр, а не из алфавитов .. вход являетсяУдалить двойные кавычки только из чисел

"000027679","ROMANO","CRYSTAL","S","FT","19990706","19990706","A",,"006901", 

Я попытался это регулярное выражение выражение

string newcontent = Regex.Replace(contents, @"[\""]", ""); 

, но это удаление всех двойные кавычки которого я не хочу. Я хочу удалить только двойные кавычки из чисел.

+2

'string newcontent = Regex.Replace (содержимое, @" \ "(\ d +) \" "," $ 1 ");' –

ответ

0

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

string newcontent = Regex.Replace(contents, @"(?<=\d+\d)[""]|[""](?=\d+\d)", ""); 
+0

И когда это «1asd3», это также удалит их? –

+0

приятный улов, дай мне посмотреть, что я могу сделать. –

+0

@SamiKuhmonen исправил это. обратите внимание, что регулярное выражение в C# работает с lookbehind и квалификатором. но некоторые механизмы регулярных выражений могут не работать с ним. –

3

Вы можете сделать это с захваченной группой в регулярном выражении, используйте регулярное выражение "(\d+)" и заменить его захваченным значением


КОД:

string contents="\"000027679\",\"ROMANO\",\"CRYSTAL\",\"S\",\"FT\",\"19990706\",\"19990706\",\"A\",,\"006901\""; 
string newcontent = Regex.Replace(contents,@"""(\d+)""", "$1");<hr> 

ВЫВОД:

000027679,"ROMANO","CRYSTAL","S","FT",19990706,19990706,"A",,006901 
+1

хороший алгоритм быстрого регулярного выражения;) –

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