专业的JAVA编程教程与资源

网站首页 > java教程 正文

JAVA正则替换已匹配的子串(java正则替换保留原值并增加q)

temp10 2024-10-09 20:38:24 java教程 15 ℃ 0 评论

我经常需要进行动态替换字符串,如;

姓名${user}为的同学,考试总分为${score}

JAVA正则替换已匹配的子串(java正则替换保留原值并增加q)

我们需要将${}里面的内容替换为我们动态传入的值

使用正则实现\:

public static void main(String[] args) {
		Map<String, String> map = new HashMap<>();
		map.put("user", "张无忌");
		map.put("score", "98");
		String str = "姓名${user}的同学,考试总分为${score}";
		String patern = "\\$\\{(.+?)\\}";
		Pattern p = Pattern.compile(patern);
		Matcher ma = p.matcher(str);
		StringBuffer buff = new StringBuffer();
		while (ma.find()) {
			
			String key = ma.group(1);
			String val = map.get(key);
			//将当前匹配子串替换为指定字符串,并且将替换后的子串以及其之前到上次匹配子串之后的字符串段添加到一个 StringBuffer 对象里
			ma.appendReplacement(buff, val == null ? "" : val);
		}
		//将最后一次匹配工作后剩余的字符串添加到一个 StringBuffer 对象里
		ma.appendTail(buff);
		System.out.println(buff.toString());
	}

运行结果:

姓名张无忌的同学,考试总分为98

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表