- ベストアンサー
C#でCSVファイルから検索したい文字を取得する方法
- C#でCSVファイルから特定の文字を検索し、取得する方法について詳しく教えてください。
- 具体的には、このCSVデータで指定した文字を検索し、該当する行の特定の列の文字を取得したいです。
- また、CSVファイルからの読み出し方法についても教えていただければ幸いです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
第1パラメータにCSVのファイル名、 第2パラメータに探したいコード番号(ex.7500100) を指定すると「アイ」の列の項目を表示するコンソールプログラムの例。 using System; using System.IO; namespace CSVRead { struct piyopiyo { public string number; public string code; public string piyo1; public string piyo2; public string piyo3; public string piyo4; public string piyo5; } class Program { static void Main(string[] args) { piyopiyo readdata = new piyopiyo(); readdata.code = string.Empty; try { // 第1パラメータで指定されたシフトJISコードのファイルを開く StreamReader sr = new StreamReader(args[0], System.Text.Encoding.GetEncoding("shift_jis")); string line; // 1行ずつ読み込み while ((line = sr.ReadLine()) != null) { // 行を「,」で分割 string[] param = line.Split(','); // 「"」を除去して構造体に格納 readdata.number = (param[0].Split('"'))[1]; readdata.code = (param[1].Split('"'))[1]; readdata.piyo1 = (param[2].Split('"'))[1]; readdata.piyo2 = (param[3].Split('"'))[1]; readdata.piyo3 = (param[4].Split('"'))[1]; readdata.piyo4 = (param[5].Split('"'))[1]; readdata.piyo5 = (param[6].Split('"'))[1]; // 第2パラメータで指定されたコード番号を判定 if (readdata.code == args[1]) { break; } } if (readdata.code != args[1]) { Console.WriteLine("{0:s} は無いの", args[1]); } else { Console.WriteLine("{0:s} は {1:s} なの", args[1], readdata.piyo3); } } catch (Exception e) { Console.WriteLine("{0:s} なんて読めないの", args[0]); } } } }
その他の回答 (1)
- magicalpass
- ベストアンサー率58% (378/648)
全部読み込んでから探す場合 (1)1行ずつ読み込み、「,」を区切りとして各データを配列または構造体に取り込む。 (2)(1)を繰り返し、行数分の配列に格納 (3)2番目の要素に「7500100」が入ってる行を探す。 (4)その行の5番目の要素を取り出す。 1行ずつ読み込みながら探す場合 (1)1行ずつ読み込み、「,」を区切りとして各データを配列または構造体に取り込む。 (2)2番目の要素に「7500100」が入ってなければ次の行を繰り返す。 (3)2番目の要素に「7500100」が入っていれば5番目の要素を取り出す。 C#で一行ずつテキストを読み込んで処理する場合はStreamReaderクラスを生成し、ReadLineメソッドで一行ずつ取り出すのが便利でしょう。取り出したString型の文字列はSplitメソッドで区切り文字を指定して分割できます。
補足
申し訳ありませんが、ソース教えて戴けませんか? お願いいたします。
お礼
ありがとうございます。 助かりました。