import org.joda.time.DateTime; java
public String convertTemplate2Content(String id){ User user = userService.getUserById(id);//演示代码此行能够忽略 String content = "{name}在{date}提交了一份代码,里面第{line}有不少bug"; // 正则表达式 寻找 大括号内的 数据 Pattern pattern = Pattern.compile("(?<=\\{)(.+?)(?=\\})"); Matcher matcher = pattern.matcher(content); Map<String, Object> map = Bean2Map.beanToMap(user); // 遍历全文 while (matcher.find()) { String field = matcher.group(); // 用来替换 {字段} 的正则 String replace = "\\{" + field + "\\}"; Object object = map.get(field); if (object == null) { return "数据模板字段输入错误"; } // 时间类型格式化后转字符串 if (object instanceof java.util.Date) { Date date = (java.util.Date) object; object = new DateTime(date).toString("yyyy-MM-dd HH:mm:ss"); } String replaceAll = content.replaceAll(replace, object.toString()); content = replaceAll; } return content; }
/** * javaBean 转 Map * * @param object * 须要转换的javabean * @return 转换结果map * @throws Exception */ public static Map<String, Object> beanToMap(Object object) throws Exception { Map<String, Object> map = new HashMap<String, Object>(); Class<? extends Object> cls = object.getClass(); Field[] fields = cls.getDeclaredFields(); for (Field field : fields) { field.setAccessible(true); map.put(field.getName(), field.get(object)); } return map; }