博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
翻译器DIY它———算在英文文本中的单词数,字符和行数
阅读量:6312 次
发布时间:2019-06-22

本文共 1197 字,大约阅读时间需要 3 分钟。

咳咳。这部分应该是序列化编译器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

版权声明:本文博客原创文章。博客,未经同意,不得转载。

你可能感兴趣的文章
RESTful Mongodb
查看>>
BZOJ3237:[AHOI2013]连通图(线段树分治,并查集)
查看>>
如何提高Ajax性能
查看>>
Android--自定义加载框
查看>>
LINUX下 lamp安装及配置
查看>>
BZOJ3105 [cqoi2013]新Nim游戏
查看>>
困惑的前置操作与后置操作
查看>>
SDNU 1269.整数序列(水题)
查看>>
BZOJ 2118 Dijkstra
查看>>
Go语言基础之结构体
查看>>
SpringCloud:Eureka Client项目搭建(Gradle项目)
查看>>
jqueryValidate
查看>>
ATL使用IE控件,并且屏蔽右键
查看>>
Jenkins
查看>>
linux下使用screen和ping命令对网络质量进行监控
查看>>
数据库设计技巧
查看>>
css定位概述
查看>>
C# 动态修改配置文件 (二)
查看>>
BOM:文档对象模型 --树模型
查看>>
我的Android进阶之旅------>WindowManager.LayoutParams介绍
查看>>