存入数据库的字段取出时如何给予不同样式
我们存入数据库的字段是单个,一般一起取出的时候都是给予一个相同的样式,但当我们需要对其做些什么的时候,比如相同属性整合,加入换行,空格,自定义文字加粗,我的方式可以给予一些参考
以下将对一整条字段
小明(工程部),小红(工程部),小兰(工程部),小紫(化工部),小黑(化工部),小光(后勤部)
进行处理,代码如下
//此处取出所有数据,小明(工程部)为单条数据
Long id = checkRole.getId();
List listS = this.getReady(id);
//pzS为最终的结果
String pzS = "";
//正则表达式,取出括号中的内容
Pattern pattern = Pattern.compile("(?<=\\()(.*)(?=\\))");
//此处因为我的listS不是从数据库取出的,而已经过处理的所以用map重新取值,如果有封装的get方法可以直接list.get("name",name)使用,没有的话麻烦点用map也行
Map map0 = (Map) listS.get(0);
//取出第一个的部门,与第一个的名字,分开放,因为要对其进行样式处理
Matcher matcher0 = pattern.matcher(map0.get("name").toString());
//此处取出数据为小明(工程部)
String nm=map0.get("name").toString();
//此处取出数据为(工程部)
String nmrule = nm.substring(nm.indexOf("("),nm.indexOf(")")+1);
//将(工程部)用“”代替 等于去除括号及其内容
String name0 = nm.replace(nmrule, "");
//用matcher。group()得加while(matcher.find())不然会报错
while (matcher0.find()) {
//top是部门文字,用<b>加粗,加点空格好看一点
String top = "<b>"+"<br>"+matcher0.group()+":"+"  "+"</b>";
pzS = top +name0;
}
for (int i = 0; i < listS.size()-1; i++) {
Map map = (Map) listS.get(i);
Map map2 = (Map) listS.get(i+1);
//下面分两种情况,取出数据与上一条部门相同或不相同
if (map.get("name") != null||map2.get("name") != null) {
Matcher matcher = pattern.matcher(map.get("name").toString());
Matcher matcher2 = pattern.matcher(map2.get("name").toString());
while (matcher.find()) {
while (matcher2.find()) {
//如果部门相同且不是同一个人,具体与上面一样
if (matcher.group().equals(matcher2.group()) && map.get("name") != map2.get("name")) {
String name2 = map2.get("name").toString();
String nm2 = map2.get("name").toString();
String nmrule2 = nm2.substring(nm2.indexOf("("), nm2.indexOf(")") + 1);
name2 = name2.replace(nmrule2, "");
pzS = pzS + "  " + name2;
} else {
//如果部门不同,则在前面加个回车符号,能识别的,不用担心
String name2 = map2.get("name").toString();
String nm2 = map2.get("name").toString();
String nmrule2 = nm2.substring(nm2.indexOf("("), nm2.indexOf(")") + 1);
name2 = name2.replace(nmrule2, "");
String top2 = "<b>" + "<br>" + matcher2.group() + ":" + "  " + "</b>";
pzS = pzS + top2 + name2;
}
}
}
}
}
//取完,赋值,大功告成,别忘记return回去数据
checkRole.setPz(pzS);
}
完成看结果
不方便透露数据,凑合看看,手动滑稽
其实就是取出相同部门作一行,部门不重复展示,部门加粗