字符串截取(记一次工作总结)

来源:互联网 发布:log4j sql日志级别 编辑:程序博客网 时间:2024/06/17 05:41

问题描述:车辆车牌号码的展示,杭州车牌电动车车牌前面都是杭州XXXXXXX,HBXXXXXXX,等等。现在客户要求根据电动二轮车,电动三轮车,车牌重新命名。比如电动二轮车,车牌号统一以数字2开头,组成纯7位数字;电动三轮车,车牌号同意以数字3开头,组成纯7位数字。

解决方法:原数据库表不动,重新建立一张数据库表,用来存储客户需要的车牌号码。通过字符串拼截取方法。

原来的车牌查询结果如图:
这里写图片描述

重新截取后结果,客户期望看到的结果:
这里写图片描述

具体步骤如下:
第一步在数据库中建立新的表

CREATE TABLE `cx_tracarnumber` (  `id` int(10) NOT NULL AUTO_INCREMENT,  `carnumber` varchar(15) DEFAULT NULL,  `username` varchar(15) DEFAULT NULL,  `type` varchar(15) DEFAULT NULL,  `deviceid` varchar(15) DEFAULT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

有两点需要注意的id 是主键,且id 是自增长的。

第二步:

@Controller@RequestMapping(value="/admin")public class TranslateCarnumberController {    /**     * 车辆基本信息     */    @Autowired    Car_Service car_Service;    @Autowired    CxTracarnumberService cxTracarnumberService;    @RequestMapping(value="/car/Trans_CarNumber")    public void Trans_CarNumber(){        CxTracarnumber cxTracarnumber = new CxTracarnumber();        List<Car> tarList = car_Service.selectCarList();        for (int i = 0; i <tarList.size(); i++) {            // 车辆类型 含有 二 则为  截取号码为 数字2 开头使用            if (tarList.get(i).getType().indexOf("二") != -1) {//              System.out.println("车辆类型 含有 二 则为  截取号码为 数字2 开头使用");                String carnumber = "2"+tarList.get(i).getCarnumber().substring(tarList.get(i).getCarnumber().length()-6);                String username = tarList.get(i).getUsername();                String type =tarList.get(i).getType();                String deviceid = tarList.get(i).getDeviceid();                String id = tarList.get(i).getId();                cxTracarnumber.setCarnumber(carnumber);                cxTracarnumber.setUsername(username);                cxTracarnumber.setType(type);                cxTracarnumber.setDeviceid(deviceid);//              cxTracarnumber.setId(id+"");                cxTracarnumberService.insertSelective(cxTracarnumber);            }else{                // 车辆类型 含有 三 则为  截取号码为 数字3开头使用//              System.out.println("车辆类型 含有 三 则为  截取号码为 数字3开头使用");                String carnumber = "3"+tarList.get(i).getCarnumber().substring(tarList.get(i).getCarnumber().length()-6);                String username = tarList.get(i).getUsername();                String type =tarList.get(i).getType();                String deviceid = tarList.get(i).getDeviceid();                cxTracarnumber.setCarnumber(carnumber);                cxTracarnumber.setUsername(username);                cxTracarnumber.setType(type);                cxTracarnumber.setDeviceid(deviceid);                cxTracarnumberService.insertSelective(cxTracarnumber);            }        }    }    // 判断一个字符串是否都为数字      public boolean isDigit(String strNum) {          return strNum.matches("[0-9]{1,}");      } }

注意:
这里先进行车辆类型的判断,如果车辆类型中包含二,则为二轮车,车牌号以数字2开头。同理则为三轮车,车牌以数字3开头。
这个是字符串的截取。通过for循环,先获取车牌号,然后截取车牌号的后六位,则转为目标车牌号码。

String carnumber = "2"+tarList.get(i).getCarnumber().substring(tarList.get(i).getCarnumber().length()-6);

最后将结果插入到数据库中。因为ID是自增长,所以不需要设置id。创建数据库表的时候,默认以1开始。

测试的时候执行该方法,可转为期望的结果。

《end》