如何删除双引号内的双引号

时间:2013-03-18 19:47:37

标签: c# vb.net

我遇到了问题,无法弄清楚要做什么。

问题:我需要在双引号内删除双引号


字符串示例:

“MIKE YANICK”,“412 A AVE”E“,”“,”NADIEN PA“,”“,”190445468“

如您所见,“412 A AVE”E“中的字母E有一个额外的双引号。


我需要删除它。

以下是我的结果:

“MIKE YANICK”,“412 A AVE E”,“”,“NADIEN PA”,“”,“190445468”


  • 我不能使用表达式,因为模式每次都会改变。
  • string.replace不起作用,因为您需要对值进行硬编码
  • 在双引号之间读取值不起作用,因为它会被中间的引号抛弃

请帮忙......

4 个答案:

答案 0 :(得分:3)

你可以使用这样的正则表达式:

(?<!(^|,))"(?!(,|$))

这将匹配任何双引号("),该引号不是由字符串的开头或逗号开头,并且后面没有逗号或字符串的结尾。

答案 1 :(得分:3)

这适用于您的示例:

Regex.Replace("\"MIKE YANICK\",\"412 A AVE \"E\",\" \",\"NADIEN PA\",\" \",\"190445468\"",
    "(?<=\")([^,]*)(?=\")",
    m => m.Value.Replace("\"", string.Empty)) ;

输出:

"MIKE YANICK","412 A AVE E"," ","NADIEN PA"," ","190445468"

答案 2 :(得分:0)

我要做的是,寻找",。如果引号不在逗号旁边,请删除引号。

答案 3 :(得分:0)

如何使用替换?

类似的东西:

string test = "\"MIKE YANICK\",\"412 A AVE \"E\",\" \",\"NADIEN PA\",\" \",\"190445468\"";
string[] fields = test.Split(new char[] {','});
StringBuilder result = new StringBuilder();
bool first = true;

foreach (var field in fields)
{
    if(first)
    {
        first = false;
    }
    else
    {
            result.Append(",");
    }

    result.AppendFormat("\"{0}\"", field.Replace("\"",""));
}

Console.WriteLine (string.Format("Old : {0} New: {1}", test,result.ToString()));