JAVA正则表达式(二)

本文介绍了一种通过自定义模板来展示主表明细表数据的方法。利用Java代码实现了数据源中主信息与从信息的结合,并通过替换模板中的变量生成最终的定制内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介:适用于主表明细表数据,通过自定义模板,展现定制内容。

 

模拟例子:

 

~数据源

 

// 主信息
Map<String, String> mainmap = new HashMap<String, String>();
mainmap.put("z", "animals");

// 从信息		
Map<String, String> map1 = new HashMap<String, String>();
map1.put("x", "cat");
map1.put("y", "miaomiao");
Map<String, String> map2 = new HashMap<String, String>();
map2.put("x", "dog");
map2.put("y", "wangwang");
Map<String, String> map3 = new HashMap<String, String>();
map3.put("x", "pig");
map3.put("y", "hengheng");
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
list.add(map1);
list.add(map2);
list.add(map3);

 

~自定义模板

String template = "$z singing\n#{$xs - $y...\n}end";

 

~定制程序片

for (String key : mainmap.keySet()) {
      template = template.replaceAll("\\$" + key, mainmap.get(key));
}
		
Pattern p = Pattern.compile("\\#\\{([^\\}]*)\\}");
Matcher m = p.matcher(template);
StringBuffer sb = new StringBuffer();
while (m.find()) {
      String forstr = m.group(1);
      StringBuffer replacestr = new StringBuffer();
      for (Map<String, String> map : list) {
            String tmp = forstr;
            for (String key : map.keySet()) 
                  tmp = tmp.replaceAll("\\$" + key, map.get(key));
            replacestr.append(tmp);
      }
      m.appendReplacement(sb, replacestr.toString());
}
m.appendTail(sb);
System.out.println(sb.toString());

 

~运行结果

animals singing
cats - miaomiao...
dogs - wangwang...
pigs - hengheng...
end

 

注:同事在使用过程中发现,若存在$a和$aa的变量时,需要注意替换的顺序。

或者安全起见可以使用$|a|和$|aa|来界定变量,界定符不能为{}否则会和#{}引起冲突导致正则失败。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值