2012-12-14 51 views
0

分裂的文字我想在行總結從.txt文件

private async void search() 
    { 
     if (tbs.Text != null) 
     { 
      var files = await ApplicationData.Current.LocalFolder.GetFileAsync(logid.Text + ".txt"); 
      var lines = await FileIO.ReadLinesAsync(files); 
      var pattern = tbs.Text; 
      foreach (string line in lines.Where(line => line.Contains(pattern))) 
      { 

      } 
     } 
    } 

每一行彙總所有片[1]是這樣的
收入10000
收入20000

我要總結全部第二張(件[1])
該怎麼辦?

+0

你的意思是你想爲30000結果? –

+0

@SidharthMudgal是的 –

回答

0

您可以使用string.Split方法來做到這一點,使用分隔符的空格字符。它將返回一個字符串數組,數量將成爲第二個元素。

然後,您將字符串值轉換爲int與int.TryParse以計算總和。

private async void search() 
    { 
     if (tbs.Text != null) 
     { 
      var files = await ApplicationData.Current.LocalFolder.GetFileAsync(logid.Text + ".txt"); 
      var lines = await FileIO.ReadLinesAsync(files); 
      var pattern = tbs.Text; 
      var sum = 0; 
      foreach (string line in lines) 
      { 
       var elements = line.Split(' '); 
       int value; 
       if (int.TryParse(elements[1], out value)) 
       { 
        sum += value; 
       } 
      } 
     } 
    } 
1

假設你有列表像下面,就可以得到的總和爲:

List<string> list = new List<string>() { "income 10000", "income 20000", "income 30000" }; 
var sum = list.Sum(r => int.Parse(r.Split(' ')[1])); 

上述假設你將有分裂陣列中的至少2個元件和其產品上索引1是類型整數。對於上面你會得到的結果60000

如果你想使用int.TryParse,則:

var sum = list.Sum(r => { int i; 
          return int.TryParse(r.Split(' ')[1], out i) ? i : 0; });