2012-10-17 229 views
-3

我想在CSV文件中使用正则表达式删除所有使用双引号的双引号。目前我使用正则表达式如下做到这一点:删除双引号之间的所有双引号

inputString = Regex.Replace(inputString, @"([^\^,\r\n])""([^$,\r\n])", @""); 

但是,如果我有两个以上的双引号,为前它不工作:

"This is my "test" string"(作品)
"This "is" my "test" string"(不工作)
"This is" my test string"(不工作)

我需要一个通用的正则表达式可以只是删除双引号之间的任何双引号csv文件。

+13

为什么不只是做'与string.replace(“\””,‘’)'并在引号包裹是否存在情况下,这不会是格式 –

+1

它?在简单字符串的情况下可以,但在csv的情况下,我必须保持领先和尾随双引号。 –

+1

'1.删除所有报价 2.放入一个前导报价 3.放一个尾随报价' 这是什么格兰特托马斯试图说。 – pogo

回答

0

使用此:

inputString = Regex.Replace(inputString, @"([^\^,\r\n])""(?=[^$,\r\n])", @"$1"); 
+0

感谢您的支持正则表达式,但它不工作“这是”“我的测试字符串”“”和结果为: “这是”我的测试字符串“”这是不正确的 –

+0

它的结果:“增加喜欢”... ?这意味着你可能在csv中有多个匹配项。use:Regex reg = new Regex(@“([^ \ ^,\ r \ n])”“(?= [^ $,\ r \ n])” ,RegexOptions.Multiline); inputString = reg.Replace(inputString,@“$ 1”); – urlreader

+0

我试过你的建议,使用 Regex reg = new Regex(@“([^ \ ^,\ r \ n])”“ (?= [^ $,\ r \ n])“,RegexOptions.Multiline); inputString = reg.Replace(inputString,@”$ 1“); bu t仍然不期望的结果, “这是”“我的测试字符串”“”结果为:“这是”我的测试字符串“” –

0

尝试使用

inputString = Regex.Replace(inputString, @"(?<=\".*)\"(?=.*\")", @""); 
3

在评论我的建议是:为什么不只是做string.Replace("\"", "")和用引号括?有没有这种格式的情况?你回复说你需要将最后的字符串用引号括起来。

让我试着更明确清楚,因为这正是我所说的。只需执行如下操作:

inputString = "\"" + inputString.Replace("\"", "") + "\""; 

这将删除所有引号,然后将最终结果包裹在所需的引号中。

+0

感谢您的正则表达式,但它不适用于“这”是“我的”测试“字符串”和resul ts进入: “增加喜欢”和评论。“”这是不正确的 对不起,不适合你。 –

+1

@SanjaySen我无法理解你的评论。 – RedFilter

+0

我想他想要做的是一个CSV文件,它可能有多行,他希望保留“对于每一行(如果存在),并且他不想一行一行地读取txt。” – urlreader