汇总.txt文件中的分割文本

时间:2012-12-14 06:49:00

标签: c#

我想在行中总结所有篇幅[1]

    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)))
            {

            }
        }
    }

每一行都是这样的 收入10000
收入20000

我想把所有第二部分(第一部分[1])加起来 怎么做?

2 个答案:

答案 0 :(得分: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; });

答案 1 :(得分:0)

您可以使用string.Split方法执行此操作,使用空格字符作为分隔符。它将返回一个字符串数组,该数量将是第二个元素。

然后使用int.TryParse将字符串值转换为int以计算总和。

   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;
                }
            }
        }
    }