0%

Java 正则表达式(三):模板引擎

1. 什么是模板引擎

  • 模板是一个字符串,中间有一些变量,以 {name} 表示。比如:String template = "Hi {name}, your code is {code};
  • 这里,模板字符串中有两个变量:一个是 name,一个是 code。变量的实际值通过 Map 提供,变量名称对应 Map 中的键,模板引擎的任务就是接受模板和 Map 作为参数,返回替换变量后的字符串

2. 利用 Matcher,实现一个简单的模板引擎 Demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
private static Pattern templatePattern = Pattern.compile("\\{(\\w+)\\}");
public static String templateEngine(String template, Map<String, Object> params) {
StringBuffer sb = new StringBuffer();
Matcher matcher = templatePattern.matcher(template);
while(matcher.find()) {
String key = matcher.group(1);
Object value = params.get(key);
matcher.appendReplacement(sb, (value != null) ? Matcher.quoteReplacement(value.toString()) : " ");
}
matcher.appendTail(sb);
return sb.toString();
}

//代码寻找所有的模板变量,正则表达式为:\{(\w+)\}

//使用该模板引擎的示例代码
public static void templateDemo() {
String template = "Hi {name}, your code is {code}.";
Map<String, Object> params = new HashMap<String, Object> ();
params.put("name", "老隋");
params.put("code", 6789);
System.out.println(templateEngine(template, params));
}

// 输出为:Hi 老隋, your code is 6789.
-------------------- 本文结束感谢您的阅读 --------------------