Cast string to arrayRead data from CSV file

View Code
 1         public static string[] casttoarray(string strLine)
 2         {
 3             List<string> parsedData = new List<string>();
 4             bool tokenInQuotes = false;
 5             bool tokenContinued = true;
 6             string temp_println = "";
 7             string printLine = null;
 8 
 9             if (strLine.Trim() != null)
10             {
11                 // Cycle Each Character
12                 foreach (char character in strLine)
13                 {
14                     if (tokenContinued == true)
15                     {
16                         temp_println = printLine;
17                         printLine = temp_println;
18                     }
19                     // Split Tokens At The Commas
20                     if (character == ',')
21                     {
22                         if (tokenInQuotes == false)
23                         {
24                             //strip starting quotation
25                             if (!string.IsNullOrEmpty(printLine) && printLine.StartsWith("\""))
26                                 printLine = printLine.Substring(1, printLine.Length - 1);
27 
28                             //strip ending quotation
29                             if (!string.IsNullOrEmpty(printLine) && printLine.EndsWith("\""))
30                                 printLine = printLine.Substring(0, printLine.Length - 1);
31 
32                             //replace any double quotations with single quotation
33                             if (!string.IsNullOrEmpty(printLine))
34                                 printLine = printLine.Replace("\"\"", "\"");
35 
36                             parsedData.Add(printLine);
37                             printLine = null;
38                             tokenContinued = false;
39                             temp_println = null;
40                         }
41                         else if (tokenInQuotes == true)
42                         {
43                             printLine += character;
44                             tokenContinued = true;
45                         }
46                         continue;
47                     }
48 
49                     if (character == '\"')
50                     {
51                         // Check For Start Of Quotation
52                         if (character == '\"' && tokenInQuotes == false)
53                         {
54                             tokenInQuotes = true;
55                             printLine += character;
56                             tokenContinued = true;
57                             continue;
58                         }
59 
60                         // Check for end of Quotations
61                         else if (tokenInQuotes == true && character == '\"')
62                         {
63                             tokenInQuotes = false;
64                             printLine += character;
65                             tokenContinued = false;
66                             continue;
67                         }
68                     }
69 
70                     // Handle all other characters
71                     if (character != '\"' && character != ',')
72                     {
73                         printLine += character;
74                         continue;
75                     }
76                 }
77                 if (tokenContinued == false)
78                 {
79                     //strip starting quotation
80                     if (!string.IsNullOrEmpty(printLine) && printLine.StartsWith("\""))
81                         printLine = printLine.Substring(1, printLine.Length - 1);
82 
83                     //strip ending quotation
84                     if (!string.IsNullOrEmpty(printLine) && printLine.EndsWith("\""))
85                         printLine = printLine.Substring(0, printLine.Length - 1);
86 
87                     //replace any double quotations with single quotation
88                     if (!string.IsNullOrEmpty(printLine))
89                         printLine = printLine.Replace("\"\"", "\"");
90 
91                     parsedData.Add(printLine);
92                     printLine = null;
93                     temp_println = null;
94                 }
95             }
96             return parsedData.ToArray();
97         }
原文地址:https://www.cnblogs.com/Jenny90/p/2969267.html