2016-11-07 9 views
1

C#のテキストファイルからいくつかの値を取得したいとします。例:テキストファイルから読み取った値をフィルタリングする方法

1.sex=male 
1.name=barack 
1.lastname=obama 
1.age = 55 

2.sex=female 
2.name= kelly 
2.lastname=clinton 
2.age = 24 

3.sex = male 
3.firstname= mike 
3.lastname= james 
3.age= 19 

私はテキストファイルではなく、「性別」からすべての「名前」、「姓」と年齢を取得したいです。これをどのようにフィルタリングできますか?私はこれのようなものを試しましたが、1つの値しか示していません。

var list = new List<string>(); 

var text = File.ReadAllLines(@"C:\Users\Jal\Desktop\Test.text"); 
foreach (var s in text) 
{    
    if (s.Contains("Name")) 
    {      
     if (s.Contains("Name")) 
     { 
      var desc = s.Substring(s.IndexOf("=") + 1); 
      list.Add(desc); 
      ListView.Items.Add(desc);       
     } 
    } 
} 

このコードはスタックオーバーフローで見つかりましたが、必要な値がすべて得られません。

+0

@nozzleman私は割り当てを試みましたが、結果はありませんでした –

+1

コードは正しいと思いますが(2回繰り返すと繰り返しましたが)、これはテキストファイルのチェックに失敗し、 "text"ファイル内の行別の場所にブレークポイントを配置し、どこに問題があるかを確認します。 – Emad

+0

なぜ 'Name'をチェックすればダブルですか? – Badiparmagi

答えて

1
var names = new List<string>(); 
var lastnames = new List<string>(); 

var text = File.ReadAllLines(@"C:\Users\Jal\Desktop\Test.text"); 
foreach (var s in text) 
{ 
    if (s.Contains("lastname")) 
    {   
     var lastname = s.Substring(s.IndexOf("=") + 1); 
     lastnames.Add(lastname); 
     continue; 
    } 
    if (s.Contains("name")) 
    {   
     var name = s.Substring(s.IndexOf("=") + 1); 
     names.Add(name); 
     continue; 
    }   
} 

同様に、別のプロパティを追加できます。

+0

's.Contains(" lastname ")の* if *ステートメントは、以前は( "name") 'を含んでいます。 'if(s.Contains(" lastname "))'を最初に書く必要があります。 –

+0

@ MarkBenovsky良い点、私はそれを改善しました。そして、継続が必要です。 – BWA

+0

@BWA最初のif文はうまくいっていますが、2番目のif文はtextFileのすべての値を表示します –

0

s.Contains( "Name")は、大文字と小文字が区別され、ファイル内の文字列が "name"であるため、このケースではtrueになりません。

てみs.Containsを使用して(「名前」)

しかし、あなたはこの種のもののために正規表現を使用したほうが良いでしょう。

関連する問題