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,如需转载请自行联系原作者

相关文章
|
SQL Oracle 关系型数据库
FastAPI数据库系列(一) MySQL数据库操作 一、简介
FastAPI中你可以使用任何关系型数据库,可以通过SQLAlchemy将其轻松的适应于任何的数据库,比如: PostgreSQL MySQL SQLite Oracle Microsoft SQL Server ...
|
12月前
|
API 区块链
获取指定网页基础信息【TDK】免费API接口教程
该接口用于从标准网页中提取标题、关键词、描述和图标等信息。支持POST/GET请求,需提供用户ID、KEY及目标网址等参数,可选指定访问节点。返回状态码、信息提示及提取的内容。示例与详细文档见官网。
|
前端开发 JavaScript Android开发
掌握React Native,构建跨平台移动应用的利器
掌握React Native,构建跨平台移动应用的利器
|
存储 监控 安全
网络安全法中的 ISO 27001 和 CIA
【8月更文挑战第19天】
690 0
|
存储 API Python
PyMuPDF 1.24.4 中文文档(九)(4)
PyMuPDF 1.24.4 中文文档(九)
217 0
|
存储 分布式计算 并行计算
【大数据】计算引擎:Spark核心概念
【大数据】计算引擎:Spark核心概念
710 0
|
存储 负载均衡 API
部署大模型API的实战教程
部署大模型API的实战教程可以分为以下步骤:
|
机器学习/深度学习
YOLOv5改进 | Conv篇 | 利用轻量化PartialConv提出一种全新的结构CSPPC (参数量下降约42W)
YOLOv5改进 | Conv篇 | 利用轻量化PartialConv提出一种全新的结构CSPPC (参数量下降约42W)
613 4
|
监控 安全 网络安全
什么是https加密协议?
什么是https加密协议?
458 0