首先通过File.ReadAllLines()方法读入文本文档中内容并返回字符串数组contents,这样每行数据就成为了这个字符串数组contents的一个元素,再利用split()方法将每一个元素以空格或制表符分割,返回字符串数组,这样一行数据又被返回了3个字符串放入字符串数组中,通过Convert.ToDouble()方法将其转化为double类型并计算。创建一个StringBuilder数据类型将每行的字符串添加进去,转换为string后,最后用File.WriteAllText方法写入新建的文档。
优点是简单,缺点是只能读入小文档
,空格或制表符间隔都行
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.IO; 6 using System.Diagnostics;//Stopwatch所在命名空间 7 8 namespace 书名总价格计算 9 { 10 class Program 11 { 12 static void Main(string[] args) 13 { 14 string path = @"C:\Users\Administrator\Desktop\书名总价格计算.txt"; 15 string[] contents = File.ReadAllLines(path, Encoding.Default);//将文档所有内容放入字符串数组中 16 string[] strNew; 17 string strResult; 18 19 Stopwatch sw = new Stopwatch();//创建一个计时器方法 20 sw.Start();//开始计时 21 StringBuilder sb=new StringBuilder ();//创建sb 22 23 for (int i = 0; i < contents.Length; i++)//从第二行开始 24 { 25 if (i != 0) 26 { 27 strNew = contents[i].Split(new char[] { ‘ ‘, ‘\t‘ }, StringSplitOptions.RemoveEmptyEntries); 28 Console.WriteLine("{0} {1} {2} {3}", strNew[0], strNew[1], strNew[2], Convert.ToDouble(strNew[1]) * Convert.ToDouble(strNew[2])); 29 sb.Append(strNew[0].ToString() + " " + strNew[1].ToString() + " " + strNew[2].ToString() + " " + (Convert.ToDouble(strNew[1]) * Convert.ToDouble(strNew[2])).ToString() + System.Environment.NewLine); 30 } 31 else//第一行题头不参与计算总价格 32 { 33 strNew = contents[i].Split(new char[] { ‘ ‘, ‘\t‘ }, StringSplitOptions.RemoveEmptyEntries); 34 //将字符数组合并成一个字符串 35 //strResult=string.Join (" ", new string[] {strNew[0], strNew[1], strNew[2]}); 36 //strResult = string.Join(" ", strNew); 37 //Console.WriteLine(strResult); 38 Console.WriteLine("{0} {1} {2} 总价格", strNew[0], strNew[1], strNew[2]); 39 sb.Append(strNew[0].ToString() + " " + strNew[1].ToString() + " " + strNew[2].ToString() + " 总价格" + System.Environment.NewLine); 40 } 41 } 42 Console.WriteLine(sb); 43 //将sb这个字符串输出到新建的文本文档中 44 File.WriteAllText (@"C:\Users\Administrator\Desktop\书名总价格计算结果.txt", sb.ToString() ); 45 sw.Stop();//结束计时,以毫秒输出 46 Console.WriteLine(sw.ElapsedMilliseconds);//以毫秒形式输出结果 47 } 48 } 49 }
参考:http://blog.sina.com.cn/s/articlelist_2379298071_7_1.html
时间: 2024-10-16 12:25:55