2012-08-06 199 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('"'); 
    }