java通过正则表达式制作短信模板
Posted 赵广陆
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java通过正则表达式制作短信模板相关的知识,希望对你有一定的参考价值。
1 java 替换 ${xxx} 的内容
private static String parse(String content,Map<String,String> kvs){
Matcher m = p.matcher(content);
StringBuffer sr = new StringBuffer();
while(m.find()){
String group = m.group();
m.appendReplacement(sr, kvs.get(group));
}
m.appendTail(sr);
return sr.toString();
}
public static void main(String[] args) {
Map<String,String> m=new HashMap<>();
m.put("${a}","han");
m.put("${b}","zhong");
System.out.println( parse("例如有这样一个${a}字符串字符串:用户'${a}'的名称${b}", m));
}
2 java正则表达式appendReplacement和appendTail方法
appendReplacement是java中替换相应字符串的一个方法
appendReplacement(StringBuffer sb,String replacement)
将当前匹配子串替换为指定字符串,并且将替换后的子串以及其之前到上次匹配子串之后的字符串段添加到一个 StringBuffer 对象里
appendTail(StringBuffer sb)
将最后一次匹配工作后剩余的字符串添加到一个 StringBuffer 对象里
如果没有理解的话,那就来一个简单的demo吧
public class TheReplacements {
public static void main(String[] args) throws Exception {
// 生成 Pattern 对象并且编译一个简单的正则表达式"cat"
Pattern p = Pattern.compile("cat");
// 用 Pattern 类的 matcher() 方法生成一个 Matcher 对象
Matcher m = p.matcher("fatcatfatcatfat");
StringBuffer sb = new StringBuffer();
while(m.find()){
//此时sb为fatdogfatdog,cat被替换为dog,并且将最后匹配到之前的子串都添加到sb对象中
m.appendReplacement(sb,"dog");
}
//此时sb为fatdogfatdogfat,将最后匹配到后面的子串添加到sb对象中
m.appendTail(sb);
//输出内容为fatdogfatdogfat
System.out.println("sb:"+sb);
}
}
3 正则表达式matcher.group()用法
package cn.mingyuan.regexp.singlecharacter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class GroupIndexAndStartEndIndexTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "Hello,World! in Java.";
Pattern pattern = Pattern.compile("W(or)(ld!)");
Matcher matcher = pattern.matcher(str);
while(matcher.find()){
System.out.println("Group 0:"+matcher.group(0));//得到第0组——整个匹配
System.out.println("Group 1:"+matcher.group(1));//得到第一组匹配——与(or)匹配的
System.out.println("Group 2:"+matcher.group(2));//得到第二组匹配——与(ld!)匹配的,组也就是子表达式
System.out.println("Start 0:"+matcher.start(0)+" End 0:"+matcher.end(0));//总匹配的索引
System.out.println("Start 1:"+matcher.start(1)+" End 1:"+matcher.end(1));//第一组匹配的索引
System.out.println("Start 2:"+matcher.start(2)+" End 2:"+matcher.end(2));//第二组匹配的索引
System.out.println(str.substring(matcher.start(0),matcher.end(1)));//从总匹配开始索引到第1组匹配的结束索引之间子串——Wor
}
}
}
运行结果:
Group 0:World!
Group 1:or
Group 2:ld!
Start 0:6 End 0:12
Start 1:7 End 1:9
Start 2:9 End 2:12
Wor
以上是关于java通过正则表达式制作短信模板的主要内容,如果未能解决你的问题,请参考以下文章