存入数据库的字段取出时如何给予不同样式

该篇博客讲述了如何从数据库中取出字段并给予不同样式,实现相同部门信息整合在同一行,部门名称加粗显示。通过正则表达式匹配括号内的内容,根据部门相似性进行样式调整,达到优化展示的效果。

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

存入数据库的字段取出时如何给予不同样式

我们存入数据库的字段是单个,一般一起取出的时候都是给予一个相同的样式,但当我们需要对其做些什么的时候,比如相同属性整合,加入换行,空格,自定义文字加粗,我的方式可以给予一些参考
以下将对一整条字段

小明(工程部),小红(工程部),小兰(工程部),小紫(化工部),小黑(化工部),小光(后勤部)

进行处理,代码如下

			//此处取出所有数据,小明(工程部)为单条数据
			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()+":"+"&ensp;&ensp;"+"</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 + "&ensp;&ensp;" + 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() + ":" + "&ensp;&ensp;" + "</b>";
                                pzS = pzS + top2 + name2;
                            }
                        }
                    }
                }
            }
            //取完,赋值,大功告成,别忘记return回去数据
            checkRole.setPz(pzS);
        }

完成看结果
不方便透露数据,凑合看看,手动滑稽
在这里插入图片描述
其实就是取出相同部门作一行,部门不重复展示,部门加粗

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值