2016-11-07 66 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 

我只想從textFile中獲取所有「姓名」,「姓氏」和年齡,而不是「性別」。我怎樣才能過濾這個?我嘗試過這樣的事情,但它只顯示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);       
     } 
    } 
} 

我在Stack Overflow上找到了這段代碼,但它沒有得到我想要的所有值。

+0

@nozzleman你看到我的代碼我試着分配,但沒有結果 –

+1

該代碼似乎對我來說是正確的(雖然你重複一次,如果兩次),但這應該工作檢查你的文本文件的錯別字也檢查並看到「文本」文件中的行。將斷點放在不同的位置,看看問題出在哪裏。 – Emad

+0

爲什麼雙倍檢查'名稱'? – 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

* if *語句爲's.Contains(「lastname」)'不會被達成,因爲你有。包含(「名稱」)之前。首先需要編寫if(s.Contains(「lastname」))。 –

+0

@MarkBenovsky好點,我改進了。並繼續需要。 – BWA

+0

@BWA第一個if語句變好,但第二個語句顯示textFile中的所有值 –

0

s.Contains(「Name」)在這種情況下永遠不會是真的,因爲它區分大小寫,並且文件中的字符串是「name」。

嘗試使用s.Contains(「名稱」)

但是,你會用正則表達式這種事情會更好。