Java 修改TXT文件的某些相似字符,通过正则表达式匹配字符,IO流

package liao.learn.string;

import java.io.BufferedReader;
import java.io.CharArrayWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * _正则表达式和IO
 * @author A555
 *
 */
public class Regex {
	
	public static void main(String[] args) {
		
		// 1.读取文件
		File file = new File("F:/QQ下载/MobileFile/大王饶命.txt");
		try {
			BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file),"utf-8"));
			CharArrayWriter arrayWriter = new CharArrayWriter();
			String line = null;  // 需要替换的行
			
			// 2.以行为单位进行遍历
			while((line = bufferedReader.readLine()) != null){
				String regex = "[0-9]{1,4}、";  // 正则表达式 匹配需要修改的字符,也可固定字符
				String replacement = "";  // 需要替换的字符
				Pattern pattern = Pattern.compile(regex);
				Matcher matcher = pattern.matcher(line);
				if(matcher.find()){  // 存在匹配的字符
					System.out.println("Found value: " + matcher.group(0) );
					replacement = "第"+matcher.group(0).substring(0, matcher.group(0).length()-1)+"章 ";  // 得到匹配的字符,修改为需要的字符
					System.out.println("repalce value: " + replacement);
				}
				line = line.replaceAll(regex, replacement);  // 替换每一行中符合被替换字符条件的字符串,regex 也可修改-matcher.group(0)
				arrayWriter.write(line);  // 将该行写入内存
				arrayWriter.append(System.getProperty("line.separator"));  //添加换行符,并进入下次循环
			}
			
			//关闭输入流
			bufferedReader.close();

			//将内存中的流写入源文件
	        FileWriter fw=new FileWriter(file);
	        arrayWriter.writeTo(fw);
	        fw.close();
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值