如何从逗号分隔文件中读取值?

Ars*_* Gm 2 .net c# csv

我想在c sharp中用逗号分隔的行的文本文件中读取单词.

例如,我想读这一行:

9/10/2011 10:05,995.4,998.8,995.4,997.5,118000
Run Code Online (Sandbox Code Playgroud)

而得到的值:9/10/2011 10:05,995.4,998.8,995.4,997.5118000.

接下来,我还需要将日期的格式更改MMddYYYYHHmmss(例如100500).

我正在使用此代码进行读取是否有任何错误

 private void button1_Click(object sender, EventArgs e)
 {
     StreamReader reader1 = File.OpenText(Path1);
     string str = reader1.ReadToEnd();
     reader1.Close();
     reader1.Dispose();
     //     File.Delete(Path1);

     string[] Strarray = str.Split(new char[] { Strings.ChrW(7) });
     int abc = Strarray.Length - 1;
     int xyz = 0;
     bool status = true;

     while (xyz <= abc)
     {
        try
        {
           status = true;
           string[] strarray1 = Strarray[xyz].Split(",".ToCharArray());
           string SecName = strarray1[0];
           int a2 = 0;
           while (status)  //If the selected list is empty or the text file has selected name this will execute
           {
              status = false;
              string SecSym = strarray1[1];
              int DT = int.Parse(strarray1[2]);
              int TM = int.Parse(strarray1[3]);
              float O = float.Parse(strarray1[2]);
              float H = float.Parse(strarray1[3]);
              float L = float.Parse(strarray1[4]);
              float C = float.Parse(strarray1[5]);
              double OI = double.Parse(Convert.ToString(0));
              float V = float.Parse(strarray1[6]);

              //   string a = string.Concat(SecName, ",",SecSym,",", DT, ",", TM, ",", O, ",", H, ",", L);
              //writer.WriteLine(a);
           }
        }
        catch
        { }
     }
   }
}
Run Code Online (Sandbox Code Playgroud)

Kob*_*obi 14

.Net附带了一个可用于获取数据的现成CSV解析器.它是VB.net的一部分,但您可以通过添加对程序集的引用Microsoft.VisualBasic(它很好,非常简单)和using语句来轻松地在C#中使用它:using Microsoft.VisualBasic.FileIO;.

代码应该易于理解:

List<String[]> fileContent = new List<string[]>();

using(FileStream reader = File.OpenRead(@"data.csv")) // mind the encoding - UTF8
using(TextFieldParser parser = new TextFieldParser(reader))
{
    parser.TrimWhiteSpace = true; // if you want
    parser.Delimiters = new[] { "," };
    parser.HasFieldsEnclosedInQuotes = true; 
    while (!parser.EndOfData)
    {
        string[] line = parser.ReadFields();
        fileContent.Add(line);
    }
}
Run Code Online (Sandbox Code Playgroud)

CSV非常简单,但它可能包含逗号和换行符的引用值,因此使用Split不是最佳选项.


小智 5

使用 String.Split 方法获取字符串数组:

string[] ar = line.Split(',')
Run Code Online (Sandbox Code Playgroud)