java 批量替换字符串_# Java 一步一步实现高逼格的字符串替换工具(二)

Java 一步一步实现高逼格的字符串替换工具(二)

上一篇实现了一个用于字符串替换的方法,主要是利用 正则 + jdk的字符串替换,本篇则会再之前的基础上走一个扩展

1. 之前的方法存在的问题

先把上一篇的两个方法贴下,研究下有什么问题,然后再看下可以怎么去改进

// 获取patter的过程较为负责,这里初始化时,做一次即可

private static Pattern pattern;

static {

pattern = Pattern.compile("((?<=\\{)([a-zA-Z_]{1,})(?=\\}))");

}

/**

* 字符串替换, 将 {} 中的内容, 用给定的参数进行替换

*

* @param text

* @param params

* @return

*/

public static String format(String text, Map params) {

// 把文本中的所有需要替换的变量捞出来, 丢进keys

Matcher matcher = pattern.matcher(text);

while (matcher.find()) {

String key = matcher.group();

// text = StringUtils.replace(text, "{" + key + "}", params.get(key) + "");

text = text.replaceAll("\\{" + key + "\\}", params.get(key) + "");

}

return text;

}

public static List batchFormat(String text, List> params) {

List keys = new ArrayList<>();

// 把文本中的所有需要替换的变量捞出来, 丢进keys

Matcher matcher = pattern.matcher(text);

int tempIndex = 0;

while (matcher.find()) {

String key = matcher.group();

if (keys.contains(key)) {

continue;

}

text = StringUtils.replace(text, key, tempIndex + "");

tempIndex++;

keys.add(key);

}

List resu

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值