仅从数字中删除双引号
Posted
技术标签:
【中文标题】仅从数字中删除双引号【英文标题】:Remove Double Quotes only from Numbers 【发布时间】:2016-02-15 19:01:47 【问题描述】:我想在 CSV 文件中使用正则表达式删除所有双引号 如果它在双引号之间。目前我正在使用以下正则表达式来执行此操作:仅来自数字而不是字母.. 输入是
"000027679","ROMANO","CRYSTAL","S","FT","19990706","19990706","A",,"006901",
我试过这个正则表达式
string newcontent = Regex.Replace(contents, @"[\""]", "");
但这是删除所有我不想要的双引号。 我只想从数字中删除双引号。
【问题讨论】:
string newcontent = Regex.Replace(contents, @"\"(\d+)\"", "$1");
【参考方案1】:
您可以使用正则表达式中的捕获组来执行此操作,使用正则表达式 "(\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
【讨论】:
不错的快速正则表达式算法;)【参考方案2】:使用积极的前瞻和后瞻。表示双引号仅在前面的字符或后面的字符为数字时匹配。
string newcontent = Regex.Replace(contents, @"(?<=\d+\d)[""]|[""](?=\d+\d)", "");
【讨论】:
当它是“1asd3”时,这也会删除它们吗? 很好,让我看看我能做什么。 @SamiKuhmonen 修复了它。请注意,c# 中的正则表达式与lookbehind 和限定符一起使用。但某些正则表达式引擎可能无法使用它。以上是关于仅从数字中删除双引号的主要内容,如果未能解决你的问题,请参考以下文章