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  正则表达式入门教程

 

posted @ 2018-09-24 18:50  花什妖  阅读(419)  评论(0编辑  收藏  举报