【JAVA】文本处理(2)—给文本中每个字符后加空格或斜杠

一、前言

本次学习应用于文本处理方面,主要的功能是为了实现给文本字符后加符号,本次以斜杠和空格为例。

大部分编程语言 、数据库、文本编辑器、开发环境都支持正则表达式

正如他的名字一样是描述了一个规则,通过这个规则可以匹配一类字符串。
学习正则表达式很大程度上就是学习正则表达式的语法规则 。

二、正则表达式语法

1)普通字符

  1. 字母、数字、汉字、下划线、以及没有特殊定义的标点符号,都是“普通字符”。表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符。
  2. 简单的转义字符
    1

2) 标准字符集合

能够与 ‘多种字符’ 匹配的表达式注意区分大小写,大写是相反的意思 :
2

3)自定义字符集合

[ ]方括号匹配方式,能够匹配方括号中任意一个字符

3

正则表达式的特殊符号,被包含到中括号中,则失去特殊意义,除了^,-之外。
标准字符集合,除小数点外,如果被包含于中括号,自定义字符集合将包含该集合。比如:
[\d.\-+]将匹配:数字、小数点、+、-

三、编程学习

1)任务要求

  • 完成一个 java application应用程序,实现文本文档的读取和写入,将修改后(给文本字符后添加空格和斜杠)的新内容存入到新的文本文档中。
  • 应用数据流的相关知识,使用BufferedReader/BufferedWriter处理流:将Reader/Writer对象进行包装,增加缓存功能,提高读写效率。使用InputStreamReader/OutputStreamWriter处理流:将字节流对象转化成字符流对象。

2)程序代码

  • 1.添加空格(java IO流)
/* 项目名称:Task_Shao
 * 创建时间:2019年1月28日
 * 创建者:Administrator
 * 创建地点:hb
 * 功能:添加空格(java IO流)
 */
import java.io.*;//导入java.io包中的所有类
import java.util.*;//导入java.util包中的Scanner类
public class add_slash{//创建类名
	public static void main(String[] args) throws Exception{//程序主函数入口
		Scanner s = new Scanner(System.in);//获取键盘输入并赋值给s字符串
	    Scanner t = new Scanner(System.in);//获取键盘输入并赋值给t字符串
	    System.out.println("请输入想要打开的文本文档:");//输出提示信息
	    String a = s.nextLine();//定义字符串变量,并赋值为用户输入的信息
	    System.out.println("请输入想要写入内容的文本文档:");//输出提示信息
	    String b = t.nextLine();//定义字符串变量,并赋值为用户输入的信息
		File file=new File(b);//创建待写入文件				
		if(!file.exists()) {//若指定路径下该文件不存在执行if语句
			file.createNewFile();//则在指定路径下新建该文件
			}
		//输入的是TXT文档则继续往下执行		
		try{//将逻辑语句用try包起来
		int i=0;//新建行号的符号i
		String string=null;//新建空字符串
		InputStreamReader isr=new InputStreamReader(new FileInputStream(a));//读入数据流方式
		BufferedReader read=new BufferedReader(isr);//写入数据流方式
		OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream(file));//读入数据流方式
		BufferedWriter write=new BufferedWriter(osw);//写入数据流方式	
		while((string = read.readLine())!= null) {//readLine()方法, 用于读取一行,只要读取内容不为空就一直执行
			for(i = 0;i < string.length();i++){//for循环的条件,当i小于该行长度时就一直循环并自增
				write.append(string.charAt(i));//在新文档中逐次插入每一个字符
				write.append(" ");//在每一个字符后插入斜杠/
			}
			if(i == string.length()){//if条件语句
				write.append("\r\n");//当i等于一行的最大长度时就进行换行操作
			}
		}
			write.close();//关闭流
			read.close();//关闭流
			System.out.println("所需内容已写入指定文档!");//输出提示信息			
		}
		
		catch(Exception e) {//当代码异常时用catch捕获异常
			e.printStackTrace();//printStackTrace()方法是打印异常信息在程序中出错的位置及原因
		}	
	}
}
  • 2.添加斜杠(java IO流)
/* 项目名称:Task_Shao
 * 创建时间:2019年1月28日
 * 创建者:Administrator
 * 创建地点:hb
 * 功能:添加斜杠(java IO流)
 */
import java.io.*;//导入java.io包中的所有类
import java.util.*;//导入java.util包中的Scanner类
public class add_slash{//创建类名
	public static void main(String[] args) throws Exception{//程序主函数入口
		Scanner s = new Scanner(System.in);//获取键盘输入并赋值给s字符串
	    Scanner t = new Scanner(System.in);//获取键盘输入并赋值给t字符串
	    System.out.println("请输入想要打开的文本文档:");//输出提示信息
	    String a = s.nextLine();//定义字符串变量,并赋值为用户输入的信息
	    System.out.println("请输入想要写入内容的文本文档:");//输出提示信息
	    String b = t.nextLine();//定义字符串变量,并赋值为用户输入的信息
		File file=new File(b);//创建待写入文件				
		if(!file.exists()) {//若指定路径下该文件不存在执行if语句
			file.createNewFile();//则在指定路径下新建该文件
			}
		//输入的是TXT文档则继续往下执行		
		try{//将逻辑语句用try包起来
		int i=0;//新建行号的符号i
		String string=null;//新建空字符串
		InputStreamReader isr=new InputStreamReader(new FileInputStream(a));//读入数据流方式
		BufferedReader read=new BufferedReader(isr);//写入数据流方式
		OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream(file));//读入数据流方式
		BufferedWriter write=new BufferedWriter(osw);//写入数据流方式	
		while((string = read.readLine())!= null) {//readLine()方法, 用于读取一行,只要读取内容不为空就一直执行
			for(i = 0;i < string.length();i++){//for循环的条件,当i小于该行长度时就一直循环并自增
				write.append(string.charAt(i));//在新文档中逐次插入每一个字符
				write.append("/");//在每一个字符后插入斜杠/
			}
			if(i == string.length()){//if条件语句
				write.append("\r\n");//当i等于一行的最大长度时就进行换行操作
			}
		}
			write.close();//关闭流
			read.close();//关闭流
			System.out.println("所需内容已写入指定文档!");//输出提示信息			
		}
		
		catch(Exception e) {//当代码异常时用catch捕获异常
			e.printStackTrace();//printStackTrace()方法是打印异常信息在程序中出错的位置及原因
		}	
	}
}

3)执行结果(以西游记文本为例)

  • 1.添加空格

11
12
13

  • 2.添加斜杠

21
22

23

四、总结(常用的正则表达式

  • 开发环境和文本编辑器中使用正则

– eclipse
– Notepad++
– Editplus
– UltraEdit

  • 数据库中也可以使用正则

– Mysql5.5以上
– Oracle10g以上

4

JAVA程序中也会使用到正则表达式

API中相关类:相关类位于:java.util.regex包下面
• 类 Pattern
– 正则表达式的编译表示形式。
Pattern p = Pattern.comp
ile(r,int); //建立正则表达式,并启用相应模式
• 类 Matcher
– 通过解释 Patterncharacter sequence 执行匹配操作的引擎
Matcher m = p.matcher(str); //匹配str字符串

参考链接:
https://blog.csdn.net/xiachaoyang/article/details/79067460


  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值