2013-12-10 48 views
0

我正在創建逗號分隔值的字符串數組。 我需要在逗號分割行,但不是在引號內的逗號,因爲這可能是數據的一部分。優化逗號分隔值正則表達式

例如:
\"421 15th Ave.\",\"Beaver Falls, PA\",\"S1\",

我不希望它在城市和國家之間的分裂爲一個新的領域。

這是當前的代碼:

string[] fields = Regex.Split(lines[i], @",(?=(?:[^""]*""[^""]*"")*(?![^""]*""))"); 

這需要很長的時間來執行。 有沒有更好的選擇,我可以使用?

感謝您的任何幫助。

+0

你需要使用正則表達式嗎? CSV通常最好使用普通的舊字符串方法來解決。 – Gusdor

+1

我不需要使用正則表達式。尋找更好的選擇。你會建議採用哪種字符串方法來解決這個問題? – Baxter

+2

使用某種'csv'閱讀器。假設你正在使用一個體面的,這將已被處理,代碼應該優化。 –

回答

1

您是否考慮過使用CSV-Reader? 這個CSV,讀者應該已經處理雙引號內的逗號的情況: OpenCsv

見拉維Thapliyal的回答在這個線程有關如何使用它:link

對於C#,我可以推薦這個CsvHelper:https://github.com/JoshClose/CsvHelper

我們在我們的項目中使用它,它非常方便

+0

是否有與此相同的C#? – Baxter

+1

嘿巴克斯特我更新我的答案就在你評論之前:-) 看到我的答案上面的CsvHelper鏈接 – xeraphim

+0

嘿巴克斯特如果這個答案幫助,我將不勝感激,如果你可以將它標記爲接受答案:-)謝謝 – xeraphim

相關問題