WordCount

 

 

 

Gitee地址:https://gitee.com/dyh1621838953/WordCount1

此项目我只实现了基本功能,即字符、行数、单词数的计算以及将结果输出到文件中

该项目用C#语言进行实现。

一、解题思路:

    根据题目要求所知,需要读取一个文件中的内容,然后再计算文件内容的字符数,单词数,行数等,再将结果输出到另一个即result文件中。

所以要考虑文件的读取和输出,对单词数,字符数,行数如何计算,还有命令的输入和读取。

    基本功能如下:

     wc.exe -c file.c     //返回文件 file.c 的字符数

     wc.exe -w file.c     //返回文件 file.c 的单词总数

     wc.exe -l file.c     //返回文件 file.c 的总行数

     wc.exe -o outputFile.txt     //将结果输出到指定文件outputFile.txt

二、部分代码实现:

   主函数部分:

static void Main(string[] args)
        {
            string message = ""; // 存储用户命令
            while (message != "exit")
            {
                Console.Write("wc.exe ");
                message = Console.ReadLine();               // 得到输入命令
                string[] arrMessSplit = message.Split(' '); // 分割命令
                int iMessLength = arrMessSplit.Length;
                string[] sParameter = new string[iMessLength - 1];
                // 获取命令参数数组
                for (int i = 0; i < iMessLength - 1; i++)
                {
                    sParameter[i] = arrMessSplit[i];
                }
                // 获取文件名
                string sFilename = arrMessSplit[iMessLength - 1];
                WC wc = new WC();
                wc.Operator(sParameter, sFilename);
                wc.BaseCount(sFilename);
                wc.Display();
                wc.SaveResult();

            }
        }

  

        BaseCount函数就是计算文件内容里面的字符数,行数和单词数

        

 public void BaseCount(string filename)
            {
                try
                {
                    // 打开文件
                    FileStream file = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read);
                    StreamReader sr = new StreamReader(file);
                    int nChar;
                    int charcount = 0;
                    int wordcount = 0;
                    int linecount = 0;
                    //定义一个字符数组
                    char[] symbol = { ' ', '\t', ',', '.', '?', '!', ':', ';', '\'', '\"', '\n', '{', '}', '(', ')', '+' ,'-',
              '*', '='};

                    while ((nChar = sr.Read()) != -1)
                    {
                        charcount++;     // 统计字符数

                        foreach (char c in symbol)
                        {
                            if (nChar == (int)c)
                            {
                                wordcount++; // 统计单词数
                            }
                        }
                        if (nChar == '\n')
                        {
                            linecount++; // 统计行数
                        }
                    }
                    iCharcount = charcount;
                    iWordcount = wordcount + 1;
                    iLinecount = linecount + 1;
                    sr.Close();
                }
                catch (IOException ex)
                {
                    Console.WriteLine(ex.Message);
                    return;
                }

            }

  SaveResult函数是把单词数,行数,字符数的结果输出到文件中

public void SaveResult()
        {
            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();
        }

 三、测试:

    

   result文件如下:

 

四、总结

       此次项目让我发现很多问题,基础不好,动手能力也不好,对各种工具使用也不行,需要多花时间在这些地方。刚刚看到题目觉得很迷茫,经过百度慢慢理解,也告诉我做事情需要条理清晰,把一个问题梳理好然后一部分一部分的去解决。自己还有很多需要学习的地方。

 

参考资料:http://www.cnblogs.com/libaoquan/p/5285209.html

 

posted @ 2018-09-24 19:39  答-案  阅读(200)  评论(0编辑  收藏  举报