java wordcount程序_[java]wordcount程序

词数统计系统。

作业解析:这次作业的内容是从本地读取一个程序代码,计算出这个程序中的行数,单词数,也可进行拓展。

实现语言:java

编程思路:

程序是由各种单词和符号组成的,单词包括关键字,标识符这些单词组成的,符号包括各种运算符或者是分隔符...在这里统分为字符和单词。

在java语言中,可以实例化一个FileReader内读取程序,再使用BufferReader从字符输入流中读取文本并将字符存入缓冲区以便能提供字符、数组和线段的高效读取,BufferReader类的readline()函数能够读取一个文本行,返回一个字符串。这时可以使用String类的split()函数,split()函数能够分割字符串,参数为正则表达式,返回值为一个字符串数组。写程序中遇到的困难基本都出在这里,下边会细说。之后便可以针对分割结果进行计数,运行结果如下图,图1是运行结果,图2 是测试的程序。

调试过程:

这测试的过程中发现统计的行数总会莫名其妙的多很多,经过一番查找,发现是那些以字符结尾,然后换行的句子会出现这个问题,一番查找之后了解到split()函数在同时遇到多个需要剔除的字符时,会在返回结果里创建一个“”的元素,加一个判断结构便解决了问题。

在书写的正则表达式里含有.|(){}会报错,查看了之后有两个原因:1°.|为转义字符,前边需要添加\\。2°编译器会把表达式内的(){}识别为运算符(){}导致语法错误。

6ace3103028d40ad23cfe152577de33c.png

图1

2cee8377e953d3ceb17ab1d953f4d07c.png

图2

经验总结:写这个程序学习另一个很重要的知识--正则表达式,下面简单概括一下正则表达式。

定义与用途:正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串,在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。

由此可知,我们可以使用正则表达式对给定字符串进行匹配,查看它是否满足我们定下的正则表达规则。与此相似,我们也可以通过正则表达式从字符串中获取我们需要的部分。

语法:正则表达式是由一些普通字符和一些元字符组成的。其中普通字符包括大小写的字母和数字,而元字符则具有特殊的含义。

一个正则表达式通常被称为一个模式(pattern),为用来描述或者匹配一系列符合某个句法规则的字符串。例如:Handel、Händel和Haendel这三个字符串,都可以由“H(a|ä|ae)ndel”这个模式来描述。大部分正则表达式的形式都有如下的结构:

选择|竖直分隔符代表选择。例如“gray|grey”可以匹配grey或gray。数量限定某个字符后的数量限定符用来限定前面这个字符允许出现的个数。最常见的数量限定符包括“+”、“?”和“*”(不加数量限定则代表出现一次且仅出现一次):+加号代表前面的字符必须至少出现一次。(1次、或多次)。例如,“goo+gle”可以匹配google、gooogle、goooogle等;?问号代表前面的字符最多只可以出现一次。(0次、或1次)。例如,“colou?r”可以匹配color或者colour;*星号代表前面的字符可以不出现,也可以出现一次或者多次。(0次、或1次、或多次)。例如,“0*42”可以匹配42、042、0042、00042等。匹配圆括号可以用来定义操作符的范围和优先度。例如,“gr(a|e)y”等价于“gray|grey”,“(grand)?father”匹配father和grandfather。

上述这些构造子都可以自由组合,因此,“H(ae?|ä)ndel”和“H(a|ae|ä)ndel”是相同的。

精确的语法可能因不同的工具或程序而异。

维基百科,词条:正则表达式

因为还没有更深入的使用,就先总结到这里,毫无疑问,正则表达式是一个很强大的工具。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/244703.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python怎么创建虚拟环境_anaconda怎么创建python虚拟环境

anaconda创建python虚拟环境的方法是:执行命令【conda create -n your_env_name pythonxx】即可。如果我们要激活虚拟环境,执行命令【activate your_env_name】即可。具体方法如下:创建python虚拟环境conda create -n your_env_name pythonxx…

java servlet深入理解_java 步步惊心 (web ) 深入理解servlet

用户在浏览器中输入一个网址回车,浏览器会向服务器发送一个HTTP请求。服务器端程序接受这个请求,并对请求进行处理,然后发送回应,浏览收到回应,再把回应的内容显示出业。这种请求-响应模式就是典型web应用程序访问过程…

robot ride edit 页面不显示_【框架】robot-framework预研

隔壁组在使用robot framework进行自动化测试,这玩意之前我没接触过,决定来预研一下这个auto test框架。背景一个好的框架,背后少不了一个牛逼的团队或组织(金主爸爸),也是判断是否值得投入时间学习的一个参考因素(虽然强如塞班系统…

java 多态 降低耦合_java多态

Java多态就是为了降低耦合,方便我们开发的一种特性。比如我写了一个动物的接口。然后我通过接口实现了猫和狗这个类。在我需要使用的时候我可以这样实例化对象动物 w new 猫。这就是向上转型。这里就有一点疑问了,我们开发人员为啥不直接写个猫和狗的类…

jap和java有关系吗_hibernate与jpa有什么区别和联系?

~JPA Java Persistence API,是Java EE 5的标准ORM接口,也是ejb3规范的一部分。Hibernate,当今很流行的ORM框架,是JPA的一个实现,但是其功能是JPA的超集。JPA和Hibernate之间的关系,可以简单的理解为JPA是标…

python找房源_Python租房信息分析!找到最适合自己的房源信息!

原标题:Python租房信息分析!找到最适合自己的房源信息!租房信息分析import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsfile_data pd.read_csv("./data/链家北京租房数据.csv")file_dat…

php 任意字符串_php 生成任意长度字符串的类(只含有数字 只含有字母 混合数字和字母)...

[php]代码库/** 生成随机字符串的类,默认只包含数字、大小写字母*/class randomString {/** 生成的字符串包含的字符设置*/const NUMERIC_ONLY 1; //只含有数字const LETTER_ONLY 2; //只含有字母const MIXED 3; //混合数字和字母/** 用户传入变量,分…

python添加时间戳_在python中添加时间戳

这两个解决方案(AFAIK)都可以在python的任何2.x版本上运行(因此保证了相当多的向后兼容性)仅依赖于regex库的实现:import redata 2011-03-07 0:27:412011-03-06 0:13:412011-03-05 0:17:402011-03-04 0:55:402011-05-16 0:55:402011-05-16 0:55:402011-07-16 0:55:…

php 删除某个文件夹,Php删除指定文件与文件夹的方法

例子:复制代码 代码示例://删除指定目录(文件夹)中的所有文件函数function delfile($dir) {if (is_dir($dir)) {$dhopendir($dir);//打开目录//列出目录中的所有文件并去掉 . 和 ..while (false ! ( $file readdir ($dh))) {if($file!"." && $fi…

python 按月份分组_django ORM queryset按月、周、TruncMonth分组

如何在Django ORM中对datetime字段进行group by查询?在型号:class test1(models.Model):id models.AutoField(primary_keyTrue, uniqueTrue, verbose_nameid)name models.CharField(verbose_namename, max_length200)cdate models.DateField(verbose_…

explode php 报错,ecshop在php5.4下报错怎么办

ecshop在php5.4下报错的解决办法:1、打开“cls_template”文件,并修改“$tag_selarray_shift(explode( ,$tag));”;2、修改“static”;3、修改cls_captcha文件。本教程操作环境:windows7系统、PHP5.4版、Dell G3电脑。…

python response.json()报错_解决Django响应JsonResponse返回json格式数据报错问题

解决Django响应JsonResponse返回json格式数据报错问题,给大家,报错,代码,图书,希望能解决Django响应JsonResponse返回json格式数据报错问题易采站长站,站长之家为您整理了解决Django响应JsonResponse返回json格式数据报错问题的相关内容。代码return JsonResponse({…

php 实例 规范,PHP开发规范实例详解

本文主要和大家分享PHP开发规范实例详解&#xff0c;希望能帮助到大家。源文件代码使用<?php开头 &#xff0c;忽略闭合标签?>文件格式必须是无BOM UTF-8格式一个文件只声明一种类型&#xff0c;如class和interface不能混写在一个源文件中缩进使用4个空格来缩进&#x…

sql 相加_SQL经典题型

SQL内容及常见面试题如下&#xff1a;以下为具体的面试题内容和答案一、简单查询题目查询姓“猴”的学生名单查询姓名中最后一个字是“猴”的学生名单查询姓名中带“猴”的学生名单查询姓“孟”老师的个数二、汇总分析题目查询课程号为“0002”的总成绩查询选了课程的学生人数查…

centos编译apache php mysql,在CentOS6.7中编译安装 apache php mysql

安装 开发工具 yum groupinstall "Development Tools" ------------------------------ tar -jxvf apr-1.5.2.tar.bz2 cd apr-1.5.2 ./configure --prefix/usr/local/apr make && make install ----------------- tar -jxvf apr-util-1.5.4.tar.bz2 cd apr-u…

python为什么虚部是j不是i_Python基础02 基本数据类型

简单的数据类型以及赋值变量不需要声明Python的变量不需要声明&#xff0c;你可以直接输入&#xff1a;>>>a 10那么你的内存里就有了一个变量a&#xff0c; 它的值是10&#xff0c;它的类型是integer (整数)。 在此之前你不需要做什么特别的声明&#xff0c;而数据类…

php array 如何访问,php – 如何访问$array [@key]值

我正在使用expedia API并且它运行良好,但我不知道如何访问这种特殊类型的数组键.回复如下$response stdClass Object([size] > 1[activePropertyCount] > 144[city] > 1[hotelId] > 12345[HotelSummary] > stdClass Object([order] > 0[ubsScore] > 10748…

基于stm32f429的手写识别_关注智能手机老年用户:百度输入法手写模型迎来重磅升级...

智能手机的快速普及让很多人都已经习惯于任何事情都用手机办理&#xff0c;不仅外出买东西、乘坐公共交通可以使用智能手机支付&#xff0c;同时一些与工作、政务相关的事情也可以在智能手机端完成&#xff0c;而社交工具更是让人们几乎已经不再使用短信、电话功能&#xff0c;…

如何安装ipython notebook_IPython notebook安装指导

1.环境准备yum -y install sqlite-devel #在安装Python之前执行&#xff0c;ipython notebook依赖sqlite执行pip install ipythonpip install notebookpip install pysqlite #ipython notebook 依赖sqlite数据库&#xff0c;必须安装后才能使用[错误处理]如果安装sqlite-devel后…

Html页面上输出不了PHP,在页面上直接输出未经解析的HTML源码

摘要&#xff1a;<?php $str6$我在\php中文网\学习 PHP 和 HTML &#xff0c;目前我还是&小白&。;echo $str6,;//\, 、$str6$我在\php中文网\学习 PHP 和 HTML &#xff0c;目前我还是&小白&。;echo $str6,;//\, 、标签、&等均被解析输出echo htmlspec…