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

本文关键字:何删除 删除 | 更新日期: 2023-09-27 18:04:45

我遇到了一个问题,不知道该怎么办。

问题:我需要删除双引号,在双引号里面


字符串的例子:

"迈克YANICK"、"412大街的"E"、"、"NADIEN PA"、"、"190445468"

如你所见,字母E在"412 A AVE "E"里面有一个额外的双引号。


我需要去掉它。

我的结果应该是:

"迈克YANICK"、"412大街E",","NADIEN PA",","190445468"


  • 我不能使用表达式,因为模式每次都改变。
  • 字符串。replace将不起作用,因为您需要硬编码
  • 读取双引号之间的值不起作用,因为它被中间的引号抛出

请帮…

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

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

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

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

这适用于您的示例:

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"

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

如果只使用replace呢?

例如:

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()));