3 回答

TA貢獻1829條經驗 獲得超7個贊
嘗試使用此正則表達式:
"[^"\r\n]*"|'[^'\r\n]*'|[^,\r\n]*
Regex regexObj = new Regex(@"""[^""\r\n]*""|'[^'\r\n]*'|[^,\r\n]*");
Match matchResults = regexObj.Match(input);
while (matchResults.Success)
{
Console.WriteLine(matchResults.Value);
matchResults = matchResults.NextMatch();
}
:
貓
狗
“ 0 = OFF,1 = ON”
獅子
虎
'R =紅色,G =綠色,B =藍色'
熊
注意:此正則表達式解決方案適用于您的情況,但是我建議您使用專用的庫,例如FileHelpers。

TA貢獻1830條經驗 獲得超9個贊
為什么不聽從專家的建議,不要滾動自己的CSV解析器。
您的第一個想法是,“我需要在引號內處理逗號”。
您的下一個想法是,“哦,糟糕,我需要處理引號內的引號。轉義的引號。雙引號。單引號...”
這是通往瘋狂的道路。不要自己寫。查找具有廣泛的單元測試覆蓋面的庫,該庫涉及所有困難部分,并為您解決了所有困難。對于.NET,請使用免費的開源FileHelpers庫。

TA貢獻1806條經驗 獲得超8個贊
只需添加我今天上午工作的解決方案。
var regex = new Regex("(?<=^|,)(\"(?:[^\"]|\"\")*\"|[^,]*)");
foreach (Match m in regex.Matches("<-- input line -->"))
{
var s = m.Value;
}
如您所見,您需要每行調用regex.Matches()。然后,它將返回MatchCollection,其中具有與列相同數量的項目。顯然,每個匹配項的Value屬性都是解析后的值。
這項工作仍在進行中,但它很樂意解析CSV字符串,例如:
2,3.03,"Hello, my name is ""Joshua""",A,B,C,,,D
- 3 回答
- 0 關注
- 1020 瀏覽
添加回答
舉報