一、前言
本次学习应用于文本处理方面,前面我们说到实现给文本字符后加斜杠和空格
,本次目的是为了实现统计不同种类的字符频率。
在上一篇博客中我们讲到了正则表达式。
在这里我们将要实际的应用正则表达式,来识别和统计不同种类字符的频率。
二、正则表达式语法
1.从上一篇博客中暂提以下的语法表,详情参见正则表达式链接
JAVA程序中会使用到的正则表达式
API中相关类:相关类位于:java.util.regex
包下面
• 类 Pattern
:
– 正则表达式的编译表示形式。
– Pattern p = Pattern.comp
ile(r,int);
//建立正则表达式,并启用相应模式
• 类 Matcher
:
– 通过解释 Pattern
对 character sequence
执行匹配操作的引擎
– Matcher m = p.matcher(str);
//匹配str字符串
2.在本次任务中实际会应用的语法:
(1)使用BufferedReader/BufferedWriter
处理流和InputStreamReader/OutputStreamWriter
处理流(IO流知识参见链接)
(2)判断数字:"\\d"
(3)判断字母:"[a-zA-Z]"
(4)判断汉字:"[\\u4e00-\\u9fa5]"
(5)判断空格:"\\s"
(6)判断标点:"\\pP"
(7)循环读取:.readLine()
每类字符查询分别调用方法,详情见下面程序。
三、编程学习
1)任务要求
- 完成一个 java application应用程序,实现文本文档的读取和写入,将修改后(统计文档中汉字、数字、字母和空格标点的个数)的新内容存入到新的文本文档中。
- 应用数据流的相关知识,使用
BufferedReader/BufferedWriter
处理流:将Reader/Writer对象进行包装,增加缓存功能,提高读写效率。使用InputStreamReader/OutputStreamWriter
处理流:将字节流对象转化成字符流对象。 - 应用正则表达式的知识进行字符种类查询。
2)程序代码
/* 项目名称:Task_Shao
* 创建时间:2019年2月16日
* 创建者:Administrator_wz
* 创建地点:kmust
* 功能:统计文档中汉字、数字、字母和空格标点的个数(java IO流&正则表达式)
*/
import java.io.*;//导入java.io包中的所有类
import java.util.regex.Matcher;//导入java.util包中的Matcher类
import java.util.regex.Pattern;//导入java.util包中的Pattern类
import java.util.Scanner;//导入java.util包中的Scanner类
public class traversal_character_type {
//创建类名
public static void main(String[] args) throws IOException {
//程序的主函数入口
//String name = "H:/mycode/Winter_vacation/Traversal character type/xiyouji.txt"; //文件名(直接查找)
int num = 0; //数字数
int letter = 0; //字母数
int line = 0; //行数
int space = 0; //空格数
int word= 0;