2012-12-14 57 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; });