0

タブ区切りの txt ファイルが 1 行ずつ文字列のリストに読み込まれています。目的は、文字列の各単語を日時、浮動小数点数、文字列などの文字列の形式タイプで処理することですか? データをプロットできるようにします。これを行う他の効率的な方法はありますか?

 using (StreamReader file = new StreamReader(@"C:\Users\\Desktop\snpprivatesellerlist.txt"))
 {
   while ((line = file.ReadLine()) != null)
   {
     char[] delimiters = new char[] { '\n' };
     string[] parts = line.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
     for (int i = 0; i < parts.Length; i++)
     {
       st = parts[i];

       // process the line - if part[i] is date time - do something ()
       //                      if part[i] is a float - do something else()

     }
   }
 }

任意のヘルプと洞察をいただければ幸いです。ありがとう。

4

3 に答える 3

2

そのようにTryParseを使用することをお勧めします...

string line;
using (StreamReader file = new StreamReader(@"C:\Users\Desktop\snpprivatesellerlist.txt"))
{
    while ((line = file.ReadLine()) != null)
    {
        string st;
        DateTime dtPart;
        float flPart;
        char[] delimiters = new char[] { '\n' };
        string[] parts = line.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
        for (int i = 0; i < parts.Length; i++)
        {
            st = parts[i];

            if (DateTime.TryParse(st, out dtPart))//Is of type DateTime
            {
                //Do something with DateTime dtPart
            }
            else if (float.TryParse(st, out flPart))//Is of type float
            {
                //Do something with float flPart
            }
            else//Can be considered a string
            {
                //Do something with string st
            }
        }
    }
}
于 2012-05-22T16:23:02.427 に答える
0

タブ区切りファイルに含まれるフィールドが常に同じタイプであり、フィールドの数が固定されている場合。

次に、各行の値を格納するための構造体のクラスを作成できます。

class LineData
{    
    public float a {get; set;}
    public DateTime b {get; set;}    
}

メソッドの実装(つまり、while):

string[] parts = line.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);   
//You know 1st column is float, 2nd column is datetime
var dt = new LineData();
float.TryParse(parts[0], out dt.a);
DateTime.TryParse(parts[1], out dt.b);

//...
//store dt in a list/array. (not shown here)
于 2012-05-23T13:14:09.907 に答える
0

私の問題をちょっと解決したコードですが、まだ作業中です。

    using (StreamReader file = new StreamReader(@"C:\Users\Desktop\snpprivatesellerlist.txt"))
        {
            while ((line = file.ReadLine()) != null)
            {
                char[] delimiter1 = new char[] { '\n' };
                string[] part1 = line.Split(delimiter1, StringSplitOptions.RemoveEmptyEntries);

                for (int i = 0; i < part1.Length; i++)
                {
                    sepList.Add(part1[i]);     
                    //st = part1[i];                       
                }

            }
            file.Close();
        }

        char[] delimiter2 = new char[] { '\t' };
        for (int j = 4; j < sepList.Count; j++)
        {
            st = sepList[j];
            string[] part2 = st.Split(delimiter2, StringSplitOptions.RemoveEmptyEntries);
            alist.Add(part2);             
        }

        //DateTime time = new DateTime();
        //float value = new float();

        string tagname = alist[0][0];
        for (int y = 0; y < alist.Count; y++)
        {
             if (alist[y][0]==tagname)
            {
                      alist1.Add(alist[y]);
            }
             else
             {
                SensorProbeDataContainer sensorprobe = new SensorProbeDataContainer();
                sensorprobe.Setdata(templist);                   
                sensorprobe.SensorProbe = sensorprobe.data[0][0];
                ProbeList.Add(sensorprobe.SensorProbe);
                DateTime.TryParse(sensorprobe.data[0][2], out sensorprobe.StartDate);
                DateTime.TryParse(sensorprobe.data[(sensorprobe.data.Count - 1)][2], out sensorprobe.EndDate);
                classcontainer.Add(sensorprobe);
                tagname = alist[y][0];
                templist.Clear();                 }

        }

私はこのスレッドでそれをフォローしようとしています - https://stackoverflow.com/questions/10719396/iterating-separating-list-of-string-arrays-based-on-first-element

助けてくれてありがとう。コードに間違いがあれば指摘してください。

于 2012-05-23T13:33:28.667 に答える