2011-09-15 26 views
2

私は、シャープでカンマで区切られた行のテキストファイル内の単語を読みたいと思います。コンマ区切りファイルから値を読み取る方法は?

9/10/2011 10:05,995.4,998.8,995.4,997.5,118000 

と値を取得::9/10/2011 10:05995.4998.8995.4997.5118000

は例えば、私はこの行を読みたいです。

次に、日付の形式をMMddYYYYに変更し、時刻をHHmmss(たとえば、)に変更する必要があります。私は読書のために、このコードを使用しています

は、あなたのタスクの使用セパレータとして,Split方法の第一の部分については

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 
     { } 
    } 
    } 
} 
+0

この宿題はありますか?あなたがこれまでに試したことを示してください、いくつかのコード.. –

+0

私のコードplsを編集しました –

+0

これは解決された問題です。 csvファイルを解析するライブラリを確認します。FileHelpers/KbCsv – Gishu

答えて

1

何か問題があります。文字列datetimeをある形式から別の形式に変換するには、その文字列をdatetime(DateTime.ParseDateTime.ParseExact)に変換してからDateTime.ToStringメソッドを使用して最終形式に変換する必要があります。

+0

私はコンマで区切られた単語を読みたいと思っています –

+0

@Arshiya、何が問題なのですか? 'var result = input.Split( '、');' –

+0

私は文字列配列を使いたいと思っています。例文字列Sec = 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]); –

2

迅速かつシンプルなソリューションのために、あなたはファイルを介してストリーミングすると、このようなString.Split使用して、それぞれの行を解析することができます

using (var sr = File.OpenText("myfile.csv")) 
{ 
    string line; 
    while ((line = sr.ReadLine()) != null) 
    { 
     var fields = line.Split(','); 
     var date = DateTime.Parse(fields[0].Trim()); 
     var value1 = fields[0].Trim(); 
    } 
} 

しかし、このappraochがあればかなりエラーが発生しやすいが、より堅牢なソリューションをチェックしてくださいCsvReaderプロジェクトでは、このようなCSVファイルの解析に優れています。コンマでフィールド値を処理し、フィールドの前後にスペースをトリミングします。

DateTime.Parseで認識されない形式から日付文字列を解析する必要がある場合は、DateTime.ParseExactを代わりに使用してみてください。

4

は、文字列の配列を取得するためのstring.Splitメソッドを使用します。

string[] ar = line.Split(',') 
3

これはあなたが始める必要があります。

using System; 
using System.IO; 

public class Sample 
{ 
    public static void Main() { 
     using (StreamReader reader = new StreamReader("yourfile.txt")) { 
      string line = null; 
      while (null != (line = reader.ReadLine())) { 
       string[] values = line.Split(','); 
       DateTime date = DateTime.Parse(values[0]; 
       float[] numbers = new float[values.Length - 1]; 
       for (int i = 1; i < values.Length - 1; i++) 
        numbers[i - 1] = float.Parse(values[i]); 

       // do stuff with date and numbers 
      } 
     } 
    } 
} 

また、あなたに役立つ簡単なCsvReader classも掲載しました。

+0

これはまさに私が必要としたことでした...ありがとう。 –

0

行あなたの出力を含んでい

StreamReader sStreamReader = new StreamReader("File Path"); 
    string AllData = sStreamReader.ReadToEnd(); 
    string[] rows = AllData.Split(",".ToCharArray()); 
13

.NETは、あなたのデータを取得するために使用できる準備ができてCSVパーサが付属しています。これはVB.netの一部ですが、アセンブリの参照を追加することで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); 
    } 
} 

CSVはかなり単純ですが、それはそうSplitが最良の選択肢ではありません使用して、カンマや改行で引用された値が含まれる場合があります。

+0

これを指摘してくれてありがとうKobi。 Visual Basicに付属のCSVパーサは、CsvHelperやFileHelpers Librariesよりもはるかに信頼性が高く、他のすべてのライブラリが失敗した場合はドキュメントを解析する必要があります。 –

関連する問題