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

1. 什么是模板引擎?

答:

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

2. 【笔试题】利用 Matcher,手动实现一个简单的模板引擎 Demo?

答:

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.
-------------本文结束感谢您的阅读-------------