Pattern和Matcher使用示例

本文介绍了一种使用Java进行字符串替换的方法,通过Pattern和Matcher类实现动态字段替换,具体展示了如何将模板字符串中的变量替换成实际值,适用于邮件、短信等模板消息发送场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

废话就不说了,个人觉得直接看代码更直观

private static void test3() {
    //需要处理的目标字符串,将串中的$符号以及后面的字段用字段对应的真实值替换
    String content = "尊敬的会员您好:您订购的{$product_name},{$price},{$picuter},{$weight}已下单成功,订单号为:{$order_sn},我们会尽快为您发货。24小时服务热线:4009111111。回TD退订";
    //将字典名字以及对应的值放到一个map中
    Map<String, String> map = new HashMap<>();
    map.put("product_name", "牛肉");
    map.put("order_sn", "118");
    map.put("price", "123.56");
    map.put("picuter", "abc.jpg");
    map.put("weight", "23.45g");
    StringBuffer sb = new StringBuffer();

    //通过Pattern编译正则表达式 w+ 表示一个或者多个字母、数字、下划线
    Pattern p = Pattern.compile("\\$\\w+");
    //匹配目标字符串
    Matcher m = p.matcher(content);
    //匹配结果处理
    while(m.find()) {
        //获取匹配到的字段名
        String subString = m.group();
        //将匹配到的字段名打印,看起来更直观
	System.out.println("subString:" + subString);
        //将字段用对应的真实值替换
	m.appendReplacement(sb, map.get(subString.substring(1)));
        //打印替换后的结果
	System.out.println(sb);
    }
    //补全目标串
    m.appendTail(sb);
    System.out.println(sb.toString());
}

 运行结果如下(每次循环完替换后的结果是不是很直观^_^):

有兴趣的同学可以看看这篇博文:https://www.cnblogs.com/xyou/p/7427779.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值