2013-03-18 198 views
3

我有一个问题,不知道该怎么办。如何删除双引号内的双引号

问:我需要删除一个双引号,双引号


字符串例如:

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

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


我需要将其删除。

这里是我的结果应该是什么:

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


  • 我无法使用表达式,因为模式每次都会改变。
  • 的将与string.replace无法工作,因为你需要硬编码值
  • 读值在双引号之间不能正常工作,因为它可以让中间

揭去由报价请帮助...

+2

你能在源头解决这个问题?这段文字是如何产生的? – 2013-03-18 19:48:51

+0

我们无法修复源代码。它来自第三方.... – 2013-03-18 19:49:57

+2

'我不能使用表达式,因为模式每次都会改变。“你是什么意思?如果''模式每次都改变',你怎么可能希望修复它? – 2013-03-18 19:50:02

回答

2

这与您的例子:

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" 
+0

明天我会试试这个......谢谢 – 2013-03-18 20:07:08

+0

你是男人!!!! – 2013-03-19 12:56:28

3

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

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

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

+0

我会试试这个 – 2013-03-18 19:57:57

0

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

+0

除此之外,您可能希望首先删除''''和','之间的所有空格。 – NotMe 2013-03-18 19:55:21

+1

除了需要说明不在逗号旁边的字符串的开始和结尾。 – 2013-03-18 19:55:31

+0

是的,这可以在一些情况下工作,但不是全部。有时,双引号是关闭双引号 – 2013-03-18 19:56:04

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