功能需求

(为了印象深刻,在这里我把使用的语境也写出来了,如果各位不想了解语境,直接跳到文末获取方法)现有一张附件表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, "");}

去掉字符串首尾指定字符相关推荐

  1. 去掉字符串首尾指定的字符

    话不多说直接上代码 /*** 去掉字符串头尾指定字符* @param source 需要处理的字符串* @param element 指定字符* @return*/public static Stri ...

  2. js 字符串删除首尾_JavaScript trim 实现去除字符串首尾指定字符的简单方法

    实例如下: String.prototype.trim = function (char, type) { if (char) { if (type == 'left') { return this. ...

  3. 去掉字符串头尾指定字符

    package com.cloudsky.utils; /*** @ClassName: TrimCharUtil* @Author: lulu* @Description: 去掉字符串头尾指定字符* ...

  4. java去掉首尾字符_去掉字符串首尾指定的字符或空格

    [对用到的方法进行了解] var str = 'hdsjfi2423'; alert(str.indexOf('d'));//1 alert(str.indexOf('2'));//6 alert(s ...

  5. js 去除字符串首尾指定字符

    ' abc '.trim(); // 'abc' 这是去除首尾空格的办法 那么有没办法去除首尾指定的字符,肯定有,方法很多,,下面通过正则表达式实现 例如,我想去掉首尾逗号 , let str = ' ...

  6. python3 strip lstrip rstrip 删除字符串首尾指定字符

    1. strip() 它的函数原型:string.strip(s[, chars]),它返回的是字符串的副本,并删除前导和后缀字符.(意思就是你想去掉字符串里面的哪些字符,那么你就把这些字符当参数传入 ...

  7. 去掉首尾字符java_Java去除字符串首尾特定字符

    工作中,由于mysql存储格式特定,字符串首尾均带有单引号,需要对首尾单引号做一个去除处理.我将此封装到一个公共的方法里,代码如下: 1 /** 2 * 去除首尾指定字符 3 * @param str ...

  8. java字符串去除首尾指定字_Java去除字符串首尾特定字符

    工作中,由于mysql存储格式特定,字符串首尾均带有单引号,需要对首尾单引号做一个去除处理.我将此封装到一个公共的方法里,代码如下: 1 /** 2 * 去除首尾指定字符 3 * @param str ...

  9. C++去掉字符串首尾的空格

    去掉字符串首尾空格 本关任务:文本匹配的时候经常会因为空格个数的不同而匹配失败,现在要求你编写程序对输入的字符串进行处理,去掉首尾的空格. 例如:输入的字符串是" abcd ",去 ...

最新文章

  1. 三周写出高性能的Python代码,这些小技巧你值得一试。
  2. lucene字典实现原理——FST
  3. sht20温湿度传感器原理图_温湿度传感器在孵化行业怎么应用
  4. Python 操作 MySQL 数据库
  5. 每周分享第8期(2019.5.25)
  6. python安装scrapy_Python安装Scrapy的种种
  7. eclipse 快捷键
  8. HibernateAnnotation入门实例
  9. Ubuntu命令大全(转载)
  10. android 人体部位点击,用 TensorFlow Lite 在安卓系统上实时人体姿态跟踪
  11. 怎样修复计算机系统软件,重装系统后软件如何恢复呢?
  12. java jnlp 运行_JNLP文件如何能成功安装运行?
  13. cacheable 表达式_springboot @Cacheable 基本使用
  14. NVMe-MI协议解读
  15. 优达学城 深度学习 任务1
  16. 2018最新的web前端开发框架排行总结
  17. linux 刷流量ip,程序员同事问shell脚本刷流量,不讨巧帮他填了一个巨坑
  18. mongodb 基本介绍
  19. Gearman使用简介
  20. 爬取历史天气数据并绘制成折线图

热门文章

  1. NFM(Neural Factorization Machines):模型原理及pytorch代码实现
  2. 【BZOJ1778】[Usaco2010 Hol]Dotp 驱逐猪猡
  3. ARDUINO:控制两台步进电机同步运转
  4. android滑动冲突的解决方案
  5. 【BZOJ3442】学习小组 费用流
  6. 真 彻底 Navicat导入Excel文件表时无法打开的四种解决办法
  7. Spark—15分钟教程
  8. 手把手介绍Manjaro中添加Google输入法---亲身测试,成功安装
  9. Java基础语法02-流程控制
  10. the connection to the server was unsuccessful(file ///android_asset/www/index.html)