翻译器DIY它———算在英文文本中的单词数,字符和行数
生活随笔
收集整理的這篇文章主要介紹了
翻译器DIY它———算在英文文本中的单词数,字符和行数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
咳咳。這部分應該是序列化編譯器DIY的,然而,在這樣做DIY第一次使用前flex 為了練練手,對于后者的理解是有幫助。
在word 我經常看到一個字計數功能,因此,它是如何實現,當然,首先想到的是要經過整個文本換行和空格分析字符串,。但是能不能簡單點了,事實上對文本做單詞分析,大家都知道怎么做,難得地方可能就是代碼的實現了。那么如今假設使用正則表達式來實現的話,那么一切問題就Over 了。
環境:ubuntu(當然裝了flex的windows和mac也能夠)
原碼:
%{ unsigned long chars=0; unsigned long words=0; unsigned long lines=0; %}%% [a-zA-Z]+ {words++;chars+=strlen(yytext);} [a-z\-A-z]+ {words++;chars+=strlen(yytext);} [0-9]+ {words++;chars+=strlen(yytext);} [.|,|\b| |\t|\r] {chars++;} [\n] {lines++;chars++;} %%int main() {char filename[100];printf("統計一個英文文件里字符、單詞、行數。\n");printf("請輸入要計算的文件名稱:");scanf("%s",filename);yyin=fopen(filename,"r");printf("開始進行統計...\n");printf("沒有定義的字符:");yylex();printf("\n字符數:%ld\n", chars);printf("單詞數:%ld\n", words);printf("行數 :%ld\n", lines);return 1; } int yywrap() {return 1; }那么解釋第一個正則式[a-zA-Z]+? 表示一個或者多個由大寫和小寫字母組成的單詞
[a-z\-A-z]+???????????? 對于特殊的中間加"-"的單詞
[0-9]+???????????????? 數字集合
[.|,|\b| |\t|\r]????????? 特殊符號集合
在編寫完上述代碼之后,那么直接用flex 進行編譯。將得到一個.c文件,接著對C文件編譯生成二進制代碼執行就可以。
測試文本:
my name is te-name
%%%
測試結果:
統計一個英文文件里字符、單詞、行數。
請輸入要計算的文件名稱:test.txt
開始進行統計...
沒有定義的字符:%%%
字符數:20
單詞數:4
行數? :2
版權聲明:本文博客原創文章。博客,未經同意,不得轉載。
轉載于:https://www.cnblogs.com/mfrbuaa/p/4643724.html
總結
以上是生活随笔為你收集整理的翻译器DIY它———算在英文文本中的单词数,字符和行数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mac下Android studio 之
- 下一篇: 2015年半年小结