字符串截取(記一次工作總結)

問題描述:車輛車牌號碼的展示,杭州車牌電動車車牌前面都是杭州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》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章