WordCount基本功能实现C#
---恢复内容开始---
Gitee项目地址:https://gitee.com/fangxiang0420/WC.git
1.项目实现
拿到本次作业的题目时,刚开始觉得挺难的,毕竟自己在对字符串这方面听薄弱的,后来课上老师分析后,感觉并不是太棘手。
因为本次作业涉及到许多文件中的操作,因此我选择用C#语言来写
整个项目我设计了一个主函数和一个WC类
WC的属性如下:
private string sFilename;//文件名
private string[] sParameter;//参数数组
private int iCharcount;//字符数
private int iWordcount;//单词数
private int iLinecount;//总行数
方法如下:
public void Operator(string[] sParameter, string sFilename)//判断输入命令是否合法
{ this.sParameter = sParameter; this.sFilename = sFilename; foreach (string s in sParameter ) { if (s=="-c"||s=="-w"||s=="-l") { break; } else { Console.WriteLine("参数{0}不存在", s); break; } } }
public void Basecount(string filename)//统计字符数、单词数、行数
try { FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read); StreamReader sr = new StreamReader(fs); fs.Position = 0; iCharcount = (int)fs.Length; string streamToString = sr.ReadToEnd(); iLinecount = streamToString.Split('\n').Length; streamToString = Regex.Replace(streamToString, "[^\u4e00-\u9fa5a-zA-z0-9.].*?", " "); streamToString = Regex.Replace(streamToString, "\\s{2,}", " "); iWordcount = streamToString.Split(' ', ',').Length; sr.Close(); } catch(IOException ex) { Console.WriteLine(ex.Message); return; }
public void SaveResult()//保存数据到result.txt中
StreamWriter f = new StreamWriter(@"result.txt", false); foreach(string a in sParameter ) { if (a == "-c") f.WriteLine("{0}字符数:{1}", sFilename, iCharcount); if (a == "-w") f.WriteLine("{0}单词数:{1}", sFilename, iWordcount); if (a == "-l") f.WriteLine("{0}行数:{1}", sFilename, iLinecount); } f.Close(); Console.ReadKey();
对于输入命令我在主函数中用split()函数将输入的命令符隔开,并将最后一个命令赋值给文件名变量
实现读入功能
2.单元测试
本次测试采用白盒测试:
测试截图
截图就不一一放来了
3.心得体会:本次实验花费了不少时间,特别是在GTI代码管理上,由于是第一次接触代码管理,所有东西都是新的,自学了不少时间。算是学到了不少新的东西了。
4.参考文献
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 Git教程 - 廖雪峰的官方网站
http://deerchao.net/tutorials/regex/regex.htm 正则表达式入门教程