-7

我需要一个 C# 中的正则表达式,它可以删除字符串中出现的任意数量的双引号,它是一个 csv 文件,在从 StreamReader 读取后,我想替换字符串中的所有双引号。第一行是标题,第二行是数据。例如:

"E-mail","First Name","Last Name","Company"
"san@test.com","sanjay","sen","this is my "test" company"

所以理想的正则表达式应该给出以下输出:

"E-mail","First Name","Last Name","Company"
"san@test.com","sanjay","sen","this is my test company "

所以从列中删除双引号"this is my "test" company"并生成"this is my test company"

4

2 回答 2

1

您应该尝试修复不正确转义字符串的来源,而不是使用正则表达式。如果您不能这样做并且迫切希望完成某件事,那么一种快速而肮脏的方法是删除不以逗号或字符串开头/结尾为界的引号:

resultString = Regex.Replace(subjectString, "(?<!,|^)\"(?!,|$)", "");

这假设您一次处理一个 CSV 行。如果您将整个文件放在一个字符串中,则将其RegexOptions.Multiline用作第三个参数。

于 2012-10-06T12:58:16.523 回答
1

由于逗号周围应该有一些空格字符,所以你应该使用

output = Regex.Replace(input, "(?<!,\s*)\"(?!\s*,)", "");

CSV 标准允许在内部使用双双引号,例如"this is a ""legal"" format".

要删除此类引号,您应该使用

output = Regex.Replace(input, "(?<!,\s*)\"{2}(?!\s*,)", "");
于 2012-10-06T13:16:13.390 回答