teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記

2018/11/07 01:28

投稿

papinianus
papinianus

スコア12705

answer CHANGED
@@ -30,4 +30,26 @@
30
30
  }
31
31
  }
32
32
  }
33
+ ```
34
+
35
+ --- iniについて
36
+ ライブラリつかってパースはもしかしたら今はつらいのかもしれないので、ご提示の要件からするともう単純にテキスト比較すればいいんじゃないと思い、こういうコードを書いてみました。
37
+ ```csharp
38
+ using System;
39
+ using System.Text;
40
+ using System.IO;
41
+
42
+ namespace CsvParser
43
+ {
44
+ class Program
45
+ {
46
+ static void Main(string[] args)
47
+ {
48
+ var txt = File.ReadAllText(@"C:\work\test.ini", Encoding.GetEncoding("shift_jis"));
49
+ if(txt.Contains("S/N_LEN=11")) { return; }
50
+ if(txt.Contains("ShutDown=OFF")) { return; }
51
+ //ここから処理を継続すれば、↑のパターンを除外できます
52
+ }
53
+ }
54
+ }
33
55
  ```

1

改訂

2018/11/07 01:28

投稿

papinianus
papinianus

スコア12705

answer CHANGED
@@ -1,17 +1,33 @@
1
+ [ここ](https://webbibouroku.com/Blog/Article/textfieldparser-csv)を参考にしたのでしょうか。
2
+ 年齢が25歳の行のときだけOKとするようにかいてみました。
1
3
  ```csharp
4
+ using System;
2
- foreach (string field in row)
5
+ using System.Linq;
6
+ using System.Text;
7
+ using Microsoft.VisualBasic.FileIO;
8
+
9
+ namespace CsvParser
3
- {
10
+ {
11
+ class Program
12
+ {
13
+ static void Main(string[] args)
14
+ {
15
+ var parser = new TextFieldParser(@"C:\work\test.csv", Encoding.GetEncoding("Shift_JIS"))
16
+ { TextFieldType = FieldType.Delimited, HasFieldsEnclosedInQuotes = true, TrimWhiteSpace = false, Delimiters = new[] { "," } };
17
+ using (parser)
18
+ {
19
+ var header = parser.ReadFields().Select((field, index)=>new { field, index}).ToDictionary(a => a.field, a => a.index);
20
+ // ファイルの終端までループ
21
+ while (!parser.EndOfData)
22
+ {
23
+ // フィールドを読込
24
+ string[] row = parser.ReadFields();
25
+ if(row[header["年齢"]] == "25") { Console.Write("OK"); }
4
- Console.Write(field + "\t");
26
+ Console.WriteLine("");
5
- }
27
+ }
28
+ }
29
+ Console.ReadKey();
30
+ }
31
+ }
32
+ }
6
- ```
33
+ ```
7
- ここのところで、
8
- ```csharp
9
- foreach (string field in row)
10
- {
11
- if(field == "11")
12
- {
13
- Console.Write("OK");
14
- }
15
- }
16
- ```
17
- ということでしょうか