java 中文字符 替换_java实现替换文本中的乱码字符

创建文件加载与操作转换类Trasfer.java

import java.io.IOException;

import java.nio.file.Files;

import java.nio.file.Paths;

import java.util.HashMap;

import java.util.Map;

public class Trasfer {

/**

* 记录替换的记录

*/

private static Map recordMap = new HashMap();

/**

* 文件内容

*/

private static StringBuffer content = null;

public static StringBuffer getContent() {

return content;

}

public static Map getRecordMap() {

return recordMap;

}

/**

* JDK11 读取与加载文件

*

* @param fileName 读取源文件名

* @return

*/

public static StringBuffer loadByFile(String fileName) {

StringBuffer sbf = new StringBuffer();

try {

// 读取字节流

byte[] bytes = Files.readAllBytes(Paths.get(fileName));

sbf = new StringBuffer(new String(bytes, "utf-8"));

return content = sbf;

} catch (IOException e) {

e.printStackTrace();

}

return content = sbf;

}

/**

* 替换指定字符串

*

* @param org 被替换的字符串

* @param result 替换成的字符串

* @return

*/

public static StringBuffer replaceStr(String org, String result) {

if (content == null) {

return content;

}

int index = content.indexOf(org);

while (index >= 0) {

content.replace(index, index + 1, result);

index = content.indexOf(org);

Integer count = recordMap.get(org);

// 替换次数

recordMap.put(org, count == null ? 1 : ++count);

}

return content;

}

/**

* 以默认UTF-8编码,存储内容到指定文件

*

* @param destFileName 目标文件名

*/

public static void saveToFile(String destFileName) {

if (recordMap.isEmpty()) {

return;

}

recordMap.clear();

try {

// Java 11 , default StandardCharsets.UTF_8

Files.writeString(Paths.get(destFileName), content);

// encoding

// Files.writeString(Paths.get(path), content, StandardCharsets.US_ASCII);

// extra options

// Files.writeString(Paths.get(path), content,

//StandardOpenOption.CREATE, StandardOpenOption.APPEND);

System.out.println("save success");

} catch (IOException e) {

e.printStackTrace();

}

}

}

创建工具入口,这里使用测试类TrasferTest.java

import org.junit.Test;

public class TrasferTest {

@Test

public void readFileContent() throws Exception {

// 源文件路径

String sourcePath = "D:\\1lagoustudy\\workspace\\doc\\spring\\Spring.md";

// sourcePath = "D:\\1lagoustudy\\workspace\\doc\\mybatis\\mysql 手写.md";

// 目标文件路径

String destFileName = "D:\\1lagoustudy\\workspace\\doc\\spring\\test2.md";

destFileName = sourcePath;

Trasfer.loadByFile(sourcePath);

System.out.println(Trasfer.getContent());

// 核心替换

replace();

System.out.println("替换目标文字个数: " + Trasfer.getRecordMap());

Trasfer.saveToFile(destFileName);

}

/**

* 替换内容

*/

private void replace() {

Trasfer.replaceStr("⽀", "支");

Trasfer.replaceStr("⽬", "目");

Trasfer.replaceStr("⽅", "方");

Trasfer.replaceStr("⽣", "生");

Trasfer.replaceStr("⾼", "高");

Trasfer.replaceStr("⾏", "行");

Trasfer.replaceStr("⻆", "角");

Trasfer.replaceStr("⾮", "非");

Trasfer.replaceStr("⼦", "子");

Trasfer.replaceStr("⼯", "工");

Trasfer.replaceStr("⼊", "入");

Trasfer.replaceStr("⾯", "面");

Trasfer.replaceStr("⽤", "用");

Trasfer.replaceStr("⼆", "二");

Trasfer.replaceStr("⼀", "一");

Trasfer.replaceStr("⽂", "文");

Trasfer.replaceStr("⼼", "心");

Trasfer.replaceStr("⼚", "厂");

Trasfer.replaceStr("⾥", "里");

Trasfer.replaceStr("⽆", "无");

Trasfer.replaceStr("⽽", "而");

Trasfer.replaceStr("⽐", "比");

Trasfer.replaceStr("⻅", "见");

Trasfer.replaceStr("⽇", "日");

Trasfer.replaceStr("⼝", "口");

// 更新

Trasfer.replaceStr("⼿", "手");

Trasfer.replaceStr("⾃", "自");

Trasfer.replaceStr("⼏", "几");

Trasfer.replaceStr("⼰", "己");

Trasfer.replaceStr("⻄", "西");

Trasfer.replaceStr("⻚", "页");

Trasfer.replaceStr("⼗", "十");

Trasfer.replaceStr("⾄", "至");

Trasfer.replaceStr("⼋", "八");

Trasfer.replaceStr("⻛", "风");

Trasfer.replaceStr("⽚", "片");

Trasfer.replaceStr("⼴", "广");

Trasfer.replaceStr("⽹", "网");

Trasfer.replaceStr("⾸", "首");

}

}

若不想更新原文件,想生成新文件,可以改变量destFileName的值为临时文件路径

如果想对内容进行其他操作,可以再添加方法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值