去掉字符串首尾指定字符

功能需求

         (为了印象深刻,在这里我把使用的语境也写出来了,如果各位不想了解语境,直接跳到文末获取方法)现有一张附件表main_tablea_ttachfile、一张房间表room
         现在的需求是:每一个房间都要有附件上传共能(支持多张上传)

需求分析

         附件表整个系统都在引用,所以不能轻易乱动,能动的就是room表。那么满足这个需求的解决方案有两个:第一个方案是创建一个关联表,用来关联room表的id和main_tablea_ttachfile表的id,查询的时候作关联查询;第二个方案就是:room表新增一个字段,用来保存main_tablea_ttachfile的id,这些id之间用指定的符号隔开(,/+./*等等)。现在我采用的是第二种方案,id之间用逗号(、)隔开。

问题现象

         以下是控制器里面的一个方法:

       @RequestMapping("room-view")
    public String view(@RequestParam(value = "id", required = false) Long id, Model model) throws BadSqlGrammarException {
        logger.info("****-room-view.do,参数id:" + id);
        if (id != null) {
            Room room = roomManager.get(id);
            model.addAttribute("model", room);
            //查询出改房间下的附件
            String filesId = room.getMultipartFilesId();
            List<Map<String, Object>> multipartFiles = new ArrayList<>();
            if (filesId != null) {
                if (filesId.length() > 0) {
                    Util util = new Util();
                    //去掉首尾的 ","
                    filesId = util.trimBothEndsChars(filesId, ",");

                    String sql = "SELECT ID,CONF_ID,PATH,ATTACH_SHOW_NAME,ATTACH_SIZE,ATTACH_FILE_NAME  FROM main_tablea_ttachfile WHERE delete_flag = '1' AND id IN(" + filesId + ")";
                    logger.info("sql:" + sql);
                    multipartFiles = jdbcTemplate.queryForList(sql);
                    logger.info("multipartFiles:" + multipartFiles.toString());
                }
            }
            model.addAttribute("multipartFiles", multipartFiles);
        }
        return "roompage/room/room-view";
    }

         正如上所示,我的SQL查询语句的条件是:in,条件来源是room的属性。
现在的问题就是,如果在某个时候我删除了room的MultipartFilesId这个属性里面的首位id或者末位id那么就会造成这个属性值如下情况:,a,b,c/a,b,c, 换言之就是首位/末位有逗号,所以我们在进行查询的时候先得把首位逗号去掉。如何实现呢?

具体实现

   /**
     * 去掉首尾指定字符串
     * @param srcStr
     * @param splitter
     * @return
     */
    public  String trimBothEndsChars(String srcStr, String splitter) {
        String regex = "^" + splitter + "*|" + splitter + "*$";
        return srcStr.replaceAll(regex, "");
    }

你可能感兴趣的:(JavaTools,javaWeb项目笔记)