2012-08-06 64 views
1

如何在C#中的字符串中的每个“”之间删除逗号','?删除C#中的“”之间的逗号

我有尝试:

string result = Regex.Replace(input, 
@",([^""]$)",String.Empty); 

,但它不工作...

感谢

+0

基本上你的正则表达式替换逗号后,除了'“字符'成一个空字符串,所以...? – 2012-08-06 02:02:31

+2

你是什么意思'在每个“”之间?'你的意思是一个字符串文字吗? – 2012-08-06 02:03:42

+0

例如aaaaaa,bbbbb,cccc,“bbbb,aaaa”,aaa,“vv,x”会来:aaaaaa,bbbbb,cccc,“bbbb aaaa”,aaa,“vv x” – Maxime 2012-08-06 02:05:18

回答

1

我就在你输入字符串的样子略显迷茫,但只要因为你试图做简单的逗号替换你可以尝试

var result = input.replace(",",""); 
+2

这个答案是怎么回事呢?对他只想删除引号之间的逗号的问题发表评论。 – SimpleVar 2012-08-06 02:18:24

+0

我同意@YoryeNathan这就是为什么我删除了我的答案,因为我误解了这个问题。 – Gabriel 2012-08-06 02:19:25

+0

显然我也是这么做的:(我很抱歉 – 2012-08-06 02:23:22

5

我的想法是拆分“qu otes“,因此每个不均匀指数元素都是引号之间的东西。 通过这些去,什么也没有更换逗号他们,然后再结合一切一个字符串,应该做的伎俩:

var parts = input.Split('"'); 

for (var i = 1; i < parts.Length; i += 2) 
{ 
    parts[i] = parts[i].Replace(",", ""); 
} 

var result = string.Join("\"", parts); 
+0

这是一个不错的诀窍 – 2012-08-06 02:24:05

+1

+1。整洁的事情是,这种方法应该工作在逃脱的CSV引用也是如此,因为引号通过加倍而逃脱(“this”是一个测试。)。 – StriplingWarrior 2012-08-06 02:28:27

+0

@StriplingWarrior非常好!我确实在考虑一个空的“”的情况,但没有想到CSV格式的转义报价效果如何?酷,你指出了它! – SimpleVar 2012-08-06 02:30:24

0
// extract the fields 
    Regex CSVParser = new Regex(",(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))"); 
    String[] Fields = CSVParser.Split(Test); 


    // clean up the fields (remove " and leading spaces) 
    for (int i = 0; i < Fields.Length; i++) 
    { 
     Fields[i] = Fields[i].TrimStart(' ', '"'); 
     Fields[i] = Fields[i].TrimEnd('"'); 
    }