java文本处理之计算文本句子数
本文实例为大家分享了java计算文本句子数的具体代码,供大家参考,具体内容如下
1、任务简介
本节任务是计算文本中的句子数,并且对于句子数的划分标准为“。” “!”和“?”三种符号。
2、基本任务和代码
1)具体思路
(1)首先需要使用InputStreamReader类和BufferedReader类实现文本的读取,由于我使用的文本文档均为utf-8编码,所以还需要指定编码格式为utf-8;
(2)然后需要定义一个空的字符串变量,在对文本逐行读出后将读出的内容追加到该空字符串后;
(3)逐行读出文档,然后使用for循环对该行中的每一个字符进行遍历,使用toString()方法得到每一个字符,再使用if语句和equals()方法字符是否为“。” “!”和“?”三种符号之一,若为其中之一则句子数+1;
(4)将计算得出的句子长度打印出来;
2)任务代码
程序保存为juzi1.java,代码如下:
import java.io.*;//导入java.io包中的所有类 import java.util.Scanner;//导入java.util包中的Scanner类 public class juzi1 {//类名 public static void main(String[] args) {//程序主函数 try {//try代码块,当发生异常时会转到catch代码块中 //读取指定的文件 Scanner s = new Scanner(System.in);//创建scanner,控制台会一直等待输入,直到敲回车结束 System.out.println("请输入想要打开的文本文档:");//输入提示信息 String a = s.nextLine();//定义字符串变量,并赋值为用户输入的信息 //创建类进行文件的读取,并指定编码格式为utf-8 InputStreamReader read = new InputStreamReader(new FileInputStream(a),"utf-8"); BufferedReader in = new BufferedReader(read);//可用于读取指定文件 StringBuffer b = new StringBuffer();//定义一个字符串变量b,便于后续进行内容追加的操作 String str = null;//定义一个字符串类型变量str String d = null;//定义一个字符串类型变量c int e = 0;//定义一个int型变量,用于统计句子数 while((str = in.readLine()) != null) {//readLine()方法, 用于读取一行,只要读取内容不为空就一直执行 b.append(str);//将该行内容追加到字符串b的后面 for (int j = 0; j < str.length(); j++) {//for循环的条件,当j小于该行长度时就一直循环并自增 d = Character.toString(str.charAt(j));//返回一个字符串对象 if (d.equals("。")||d.equals("?")||d.equals("!")) {//if语句的条件,判断是否为句子 e++;//若为一句则e自增一次 } } } in.close();//关闭流 System.out.println("该文本共有"+e+"个句子");//输出总的句子数 } catch (IOException e) {//当try代码块有异常时转到catch代码块 e.printStackTrace();//printStackTrace()方法是打印异常信息在程序中出错的位置及原因 } } }
3)运行结果
(1)所有文件均保存在路径D:\demo7下,首先对一个简单的文本文档(格式为utf-8)的句子数进行计算,该文本文档命名为 lsy.txt,内容如下:
从中可以看出该文本文档中共有4句话,然后在命令行中对程序进行编译,并运行程序读取该txt文档,计算结果如下:
(2)最后在命令行下使用该程序对原版《西游记》txt文档进行计算,计算结果如下:
由此可以计算得出我使用的《西游记》文档共含有30804个句子。
3、总结
通过该程序可以计算出文本的总句子数,对于文本的的处理具有重要的意义,由于博主水平有限,故文章中的错误之处恳请各位读者指正,博主对此不胜感激。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
hutool实战:IoUtil 流操作工具类(将内容写到流中)
这篇文章主要介绍了Go语言的io.ioutil标准库使用,是Golang入门学习中的基础知识,需要的朋友可以参考下,如果能给你带来帮助,请多多关注脚本之家的其他内容2021-06-06IDEA项目启动时Flyway数据库迁移中的checksum不匹配问题及最新解决方案
面对IDEA项目启动时报出的Flyway迁移校验和不匹配问题,核心在于保持迁移脚本的一致性、正确管理和理解Flyway的工作机制,本文介绍IDEA项目启动时Flyway数据库迁移中的checksum不匹配问题及最新解决方案,感兴趣的朋友一起看看吧2024-01-01SpringCloud gateway request的body验证或修改方式
这篇文章主要介绍了SpringCloud gateway request的body验证或修改方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-07-07MyBatis映射文件中parameterType与resultType的用法详解
MyBatis中的ParameterType指的是SQL语句中的参数类型,即传入SQL语句中的参数的类型,下面这篇文章主要给大家介绍了关于MyBatis映射文件中parameterType与resultType用法的相关资料,需要的朋友可以参考下2023-04-04SpringCloud-Gateway转发WebSocket失败问题及解决
这篇文章主要介绍了SpringCloud-Gateway转发WebSocket失败问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-09-09
最新评论