摸版值${code}替换
📅 2026/7/2 18:48:01
👁️ 阅读次数
📝 编程学习
正则匹配 摸版值替换 如短信 邮件 等
下面已短信为例:
publicclassSmsTemplateTest{/** * 正则表达式 匹配${值} */privatestaticfinalStringREGEX="\\$\\{(.*?)\\}";publicstaticvoidmain(String[]args){Stringmsg="尊敬的用户${name},您的验证码是${code},5分钟内有效";Map<String,String>map=newHashMap<>(2);map.put("name","张三");map.put("code","886699");//替换方法Stringresult=render(msg,map);System.out.println(result);// 输出:尊敬的用户张三,您的验证码是886699,5分钟内有效}/** * 短信模板替换 * * @param template 短信模板 * @param params 填充参数 * @return 替换完成的短信内容 * <p> * matcher.find() 找字符串中任意一处符合正则的片段,可循环遍历所有匹配 * matcher.matches() 整串必须完全匹配正则,只能判断一次 * </> */publicstaticStringrender(Stringtemplate,Map<String,String>params){if(template==null||params==null){returntemplate;}//编译正则表达式,生成Pattern对象Patternp=Pattern.compile(REGEX);//将正则和待处理字符串绑定,生成匹配器MatcherMatchermatcher=p.matcher(template);StringBuffersb=newStringBuffer();//循环查找所有 ${xxx}while(matcher.find()){//group(0) = 变量名 ${name} / ${code}//group(1) = 变量名 name / codeStringkey=matcher.group(1);// 有值就替换,无值留空Stringval=params.getOrDefault(key,"");// appendReplacement 自动拼接前面内容+替换值matcher.appendReplacement(sb,Matcher.quoteReplacement(val));}// 拼接最后一段剩余文本matcher.appendTail(sb);returnsb.toString();}}
编程学习
技术分享
实战经验