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