C#从文本文件(*.txt)中读取带有汉字的格式化的字符串

做这个程序的起因是每个月另一个单位的会计总会拿着一张软盘来找我,然后让我帮她计算一个文本文件中的一个合计金额。文本文件中的内容如下:

格式化的字符串如下所示
000001王淑梅    210101100098195        1560.00
000002刘香兰    210101100098203        1560.00
000003邢桂兰    210101100098211        1560.00
000004王杰        210101100098229        1560.00
000005沈殿香    210101100098237        1660.00

手工统计起来很麻烦,先要复制到WORD里,再复制到EXCEL里,然后计算。
我是个懒人,所以决定用程序解决。

private void timerOpen_Tick(object sender, EventArgs e)
        {
            if (File.Exists(txtBXFilePath.Text))
            {
                lvwBXSum.Items.Clear();
                double bxSum = 0;
                StreamReader mReader = new StreamReader(txtBXFilePath.Text,System.Text.Encoding.GetEncoding("gb2312"));//这里的System.Text.Encoding.GetEncoding("gb2312")可以保证读出汉字不是乱码
                string sLine = "";
                byte[] bwrite;//它可以使读出的汉字占2个字节
                while (sLine != null)
                {
                    sLine = mReader.ReadLine();//ReadLine()方法读出的汉字占1个字节
                    if (sLine != null)
                    {
                        bwrite = Encoding.GetEncoding("GB2312").GetBytes(sLine.ToCharArray());
                        ListViewItem ser = new ListViewItem();
                        ser.SubItems[0].Text = (sLine.Substring(0,6));
                        ser.SubItems.Add(sLine.Substring(6,4).Trim());
                        //由于前面的人名字数会有不同,所以这里就要用到下面的代码,否则是对不齐的
                        ser.SubItems.Add(Encoding.Default.GetString(bwrite, 15, 15));
                        ser.SubItems.Add(sLine.Substring(35).Trim());
                        bxSum += Convert.ToDouble(sLine.Substring(35));
                        lvwBXSum.Items.Add(ser);
                    }
                }
                ListViewItem sumL = new ListViewItem();
                sumL.SubItems.Add("");
                sumL.SubItems.Add("合计");
                sumL.SubItems.Add(bxSum.ToString());
                lvwBXSum.Items.Add(sumL);
                mReader.Close();
                if(MessageBox.Show(bxSum.ToString() + "", "合计",MessageBoxButtons.YesNo) == DialogResult.OK);
                Close();
            } 

如果只是简单的带汉字的txt文件,就可以这样读:
StreamReader sr = new StreamReader(bs,System.Text.Encoding.Default);

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值