【问题标题】: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");

标签: c# regex


【解决方案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 和限定符一起使用。但某些正则表达式引擎可能无法使用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-08
相关资源
最近更新 更多