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();
		}
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章