C# 讀取 csv 文中包含逗號(,)的處理


因為csv讀取的方式就是每行按照逗號分隔,如果正文中有逗號,那么這列字段就會被引號包裹,這里給出代碼,針對這種情況的處理:

 1         /// <summary>
 2         /// 跳過引號中的逗號,進行逗號分隔(字段內容中的逗號不參與分隔)
 3         /// </summary>
 4         /// <param name="strLine"></param>
 5         /// <returns></returns>
 6         public static string[] CSVstrToArry(string splitStr)
 7         {
 8             var newstr = string.Empty;
 9             List<string> sList = new List<string>();
10 
11             bool isSplice = false;
12             string[] array = splitStr.Split(new char[] { ',' });
13             foreach (var str in array)
14             {
15                 if (!string.IsNullOrEmpty(str) && str.IndexOf('"') > -1)
16                 {
17                     var firstchar = str.Substring(0, 1);
18                     var lastchar = string.Empty;
19                     if (str.Length > 0)
20                     {
21                         lastchar = str.Substring(str.Length - 1, 1);
22                     }
23                     if (firstchar.Equals("\"") && !lastchar.Equals("\""))
24                     {
25                         isSplice = true;
26                     }
27                     if (lastchar.Equals("\""))
28                     {
29                         if (!isSplice)
30                             newstr += str;
31                         else
32                             newstr = newstr + "," + str;
33 
34                         isSplice = false;
35                     }
36                 }
37                 else
38                 {
39                     if (string.IsNullOrEmpty(newstr))
40                         newstr += str;
41                 }
42 
43                 if (isSplice)
44                 {
45                     //添加因拆分時丟失的逗號
46                     if (string.IsNullOrEmpty(newstr))
47                         newstr += str;
48                     else
49                         newstr = newstr + "," + str;
50                 }
51                 else
52                 {
53                     sList.Add(newstr.Replace("\"", "").Trim());//去除字符中的雙引號和首尾空格
54                     newstr = string.Empty;
55                 }
56             }
57             return sList.ToArray();
58         }

 

 

 

 

 

感謝:

https://blog.csdn.net/qq_36894527/article/details/97136252


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM