c# 解析txt 统计

问题描述:
abc表示该行描述的是一个产品,10/11代表产品编号,2表示产品数量 
aa表示该行是对产品的描述信息(产品良好或不良),10/11来自abc编号,1表示产品数量 
产品实体类product,有如下字段:
id,name,count(数量),remarks,goodproductNo(良品数量),badproductNo(次品数量) 
问题是:如何用程序来分别统计编号为10,11的产品到底有多少良品,多少不良品,然后赋 
值给实体类product, 

 * aaa.txt *
abc|10|测a试1|2|备注| 
abc|11|测a试2|3|备注| 
aa|10|1|良好商品·| 
aa|10|1|良好商品·| 
aa|11|1|不良商品·| 
aa|11|1|良好商品·| 
aa|11|1|良好商品·| 

 

代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] temp = System.IO.File.ReadAllLines("E:\\aaa.txt", System.Text.Encoding.GetEncoding("gb2312"));
            Dictionary<int, product> dic = new Dictionary<int, product>();
            foreach (string s in temp)
            {
                if (s.StartsWith("abc"))
                {
                    string[] pInfo = s.Split('|');
                    int id = int.Parse(pInfo[1]);
                    if (!dic.ContainsKey(id))
                    {
                        product p = new product();
                        p.Id = id;
                        p.Name = pInfo[2];
                        p.Count = int.Parse(pInfo[3]);
                        p.Remarks = pInfo[4];
                        dic.Add(id, p);
                    }
                }
                else if (s.StartsWith("aa"))
                {
                    string[] qInfo = s.Split('|');
                    int id = int.Parse(qInfo[1]);
                    if (dic.ContainsKey(id))
                    {
                        product p = dic[id];
                        int count = int.Parse(qInfo[2]);
                        string quality = qInfo[3];
                        if (quality == "良好商品·")
                            p.GoodProductNo += count;
                        else if (quality == "不良商品·")
                            p.BadProductNo += count;
                    }
                }
            }
            foreach (int i in dic.Keys)
            {
                product p = dic[i];
                Console.WriteLine("Id:{0},name:{1},count:{2},remarks:{3},goodproductNo:{4},badproductNo:{5}", p.Id, p.Name, p.Count, p.Remarks, p.GoodProductNo, p.BadProductNo);

            }

            Console.ReadKey(); //任意键退出
        }
    }
}
 
/*
输出:
Id:10,name:测试1,count:2,remarks:备注,goodproductNo:2,badproductNo:0
Id:11,name:测试2,count:3,remarks:备注,goodproductNo:2,badproductNo:1
*/

 

 

实体类product.cs:

using using using using namespace class product
    private int 0private int 0private int 0private int 0private string nullprivate string nullpublic int get
            return thisset
            thisvaluepublic int get
            return thisset
            thisvaluepublic int get
            return thisset
            thisvaluepublic int get
            return thisset
            thisvaluepublic string get
            return thisset
            thisvaluepublic string get
            return thisset
            thisvalue

}



本文转自曾祥展博客园博客,原文链接:http://www.cnblogs.com/zengxiangzhan/archive/2010/02/03/1662371.html,如需转载请自行联系原作者

上一篇:capitalized-comments (Rules) – Eslint 中文开发手册


下一篇:函数对象的四种写法,哪种更适合你?