商品 数量 单价
英语 66 100
语文 66 80
数学 66 100
化学 66 40
物理 66 60

上面截图是要处理的文本文档内容,目的是计算出总价并加在最后一列。

这一篇与上一篇比较类似,目的相同,不同之处为读入到了list中,list泛型集合可以当作可变长数组使用。通过StreamReader创建一个流sr,然后通过一个while循环将读得的每行数据放入字符串类型的list中,之后对每个list分割,并返回一个字符串数组,这个字符串数组就可以通过转化为double来计算了,计算完成后可以通过放入sb中统一写入到文本文档中。

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO; namespace 用list泛型集合操作文本文档
{
class Program
{
static void Main(string[] args)
{
////读取文本文档内容到list
string fileName = @"C:\Users\Administrator\Desktop\书名总价格计算.txt";
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
List<string> list = new List<string>();
StreamReader sr = new StreamReader(fs, Encoding.Default);//以默认的解码方式
//使用StreamReader类来读取文件
sr.BaseStream.Seek(, SeekOrigin.Begin);
// 从数据流中读取每一行,直到文件的最后一行
string tmp = sr.ReadLine();
string[] strNew;
StringBuilder sb = new StringBuilder();//创建sb
int textLineCount = ;
while (tmp != null)
{
list.Add(tmp);
tmp = sr.ReadLine();
Console.WriteLine(list[textLineCount++]);
if ((textLineCount - ) != )
{
strNew = list[textLineCount - ].Split(new char[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);
sb.Append(strNew[].ToString() + " " + strNew[].ToString() + " " + strNew[].ToString() + " " + (Convert.ToDouble(strNew[]) * Convert.ToDouble(strNew[])).ToString() + System.Environment.NewLine);
}
else
{
//将list转换为字符串数组
strNew = list[textLineCount - ].Split(new char[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);
//将字符串数组写入sb
sb.Append(strNew[].ToString() + " " + strNew[].ToString() + " " + strNew[].ToString() + " 总价格" + System.Environment.NewLine);
} }
//将sb输出到计算结果
File.WriteAllText(@"C:\Users\Administrator\Desktop\书名总价格计算结果2.txt", sb.ToString());
//查看文本文档共多少行
//Console.WriteLine(textLineCount);
//Console.WriteLine(list.Count );
//查看list[1]内容
Console.WriteLine(list[]); //关闭此StreamReader对象
sr.Close();
fs.Close();
}
}
}

c#读取文本文档实践4-读入到list泛型集合计算后写入新文档的更多相关文章

  1. 使用page object模式抓取几个主要城市的pm2.5并从小到大排序后写入txt文档

    #coding=utf-8from time import sleepimport unittestfrom selenium import webdriverfrom selenium.webdri ...

  2. spark 读取hive 计算后写入hive

    package com.grady import org.apache.spark.SparkConf import org.apache.spark.sql.{DataFrame, Row, Spa ...

  3. JavaScript document open() 方法:打开一个新文档

    <html> <head> <script type="text/javascript"> function createNewDoc() { ...

  4. c#读取文本文档实践3-写入到文本本文档

    首先通过File.ReadAllLines()方法读入文本文档中内容并返回字符串数组contents,这样每行数据就成为了这个字符串数组contents的一个元素,再利用split()方法将每一个元素 ...

  5. c#读取文本文档实践2-计算商品价格

    商品 数量 单价英语 66 100语文 66 80数学 66 100化学 66 40物理 66 60 上面是文本文档中读入的数据. using System; using System.Collect ...

  6. c#读取文本文档实践1-File.ReadAllLines()

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

  7. matlab中读取txt数据文件(txt文本文档)

    matlab中读取txt数据文件(txt文本文档) 根据txt文档不同种类介绍不同的读取数据方法 一.纯数据文件(没有字母和中文,纯数字) 对于这种txt文档,从matalb中读取就简单多了 例如te ...

  8. C# 读取文本文档(转)

    1.添加命名空间 System.IO; System.Text; 2.文件的读取 (1).使用FileStream类进行文件的读取,并将它转换成char数组,然后输出. byte[] byData = ...

  9. AJAX实现简单的读取文本文档内容到网页--AJAX

    效果图: Demo.html: <!DOCTYPE html><html lang="en"><head> <meta charset=& ...

随机推荐

  1. Egret官方案例学习笔记

    1.资源记载方式 (1)Egret引擎是2.0.5. (2)resource/resource.json文件是: { "resources": [ { "name&quo ...

  2. 解决secureCRT数据库里没有找到防火墙 '无'问题

    中文版的secureCRT由于汉化的问题(把null翻译成无了),导致每次打开都会有个防火墙的错误提示:数据库里没有找到防火墙 '无' 此会话将尝试不通过防火墙进行连接.出现这个错误的原因是在secu ...

  3. 34、JS/AJAX

      1)回顾JS中核心内容 2)了解WEB1.0和WEB2.0时代的技术与特点 3)理解AJAX的产生背景.工作原理与特点 4)掌握AJAX常用API及应用   声明:服务端使用Servlet技术 一 ...

  4. [转]Struts1.x系列教程(1):用MyEclipse开发第一个Struts程序

    转载地址:http://www.blogjava.net/nokiaguy/archive/2009/01/13/251101.html 本系列教程将详细介绍Struts 1.x的基本原理和使用方法, ...

  5. json根据key取values

    function getJson(key, jsonObj) { for (var item in jsonObj) { if (item == key) { //item 表示Json串中的属性,如 ...

  6. Android 进阶Android 中的 IOC 框架 【ViewInject】 (上)

    1.概述 首先我们来吹吹牛,什么叫IoC,控制反转(Inversion of Control,英文缩写为IoC),什么意思呢? 就是你一个类里面需要用到很多个成员变量,传统的写法,你要用这些成员变量, ...

  7. C#定时执行一个操作

    一个客户端向服务器端socket发送报文,但是服务器端限制了发送频率,假如10秒内只能发送1次,这时客户端也要相应的做限制,初步的想法是在配置文件中保存上次最后发送的时间,当前发送时和这个上次最后时间 ...

  8. CSS边距---盒子模型

    CSS盒子模型 盒子模型主要是有margin(外边距).border(边框).padding(内边距).content(内容)组成,这些属性我们可以把它转移到我们日常生活中的盒子上来理解,日常生活中所 ...

  9. jq 移除包含某个字符串的类名js

    el.removeClass (function (index, css) { return (css.match (/(^|\s)star\S+/g) || []).join(' ');//移除以“ ...

  10. Openvpn 本地密码验证

    1.修改配置文件.(添加下列配置) auth-user-pass-verify /etc/openvpn/checkpsw.sh via-env #开启用户密码脚本 client-cert-not-r ...