背景
业务系统设计中, 经常会用到操作日志的功能. 有时我们想要对操作日志实现高亮显示, 如图
而我们实际存入 mysql 中的数据只是普通文本字符串
给【张三 (111)】分配了角色,有效期:【长期】,修改后角色:【test】, 新增的角色:【test】
解决
事实上, 我们使用正则表达式找到括号并且替换, 包裹上 html 片段即可
/**
* 高亮显示 [] 的内容
*/
@Test
public void testHighLight() {
String text = "给[张三 (111)]分配了角色,有效期:[长期],修改后角色:[test], 新增的角色:[test]";
// 查找的内容 \[.+?\] 即 .+? 表示任意字符的非贪婪模式, 这样只要匹配到 ] 本次匹配就完成一次
String decimalRegex = "\\[(.+?)\\]";
// 相同效果, 不过表达式不优雅 \[[^[]+?\]
// String decimalRegex = "\\[([^\\[]+)\\]";
// 要替换为的内容 [<span class="blue">$1</span>]
String replaceRegex = String.format("[<span class=\"blue\">$1</span>]");
System.out.println(text.replaceAll(decimalRegex, replaceRegex));
}