工作中系統bug解決過程——split分割/substring截取字符串

工作記錄

總結工作經驗

本人是公司實習菜鳥,一般會安排一些比較基礎與簡單的任務讓我來做。這次公司前輩就安排給我一個系統bug我來解決,這個系統是前後端分離,前端vue,後端Java。
而我上一分鐘剛剛學習一個全是js的系統前端,突然轉回來看另一個系統的後端代碼,就有一丟丟蒙圈;再加上任務安排了剛有一會,公司就通知我要去做一些比較零碎的技術無關的事情,昨天快要腦殼痛死了,不過還好幸運,向各位大佬們學習,這個問題很快就迎刃而解了。

系統問題排查

1、從前端測試系統,發現瀏覽器network中返回的數據requireCount這個數值不正確。數據是從另一個系統導入的,庫裏的數據確定不會出錯,應該是後端處理數據出了問題。

在這裏插入圖片描述

在這裏插入圖片描述

2、後端對此處計算的特殊處理。可以看到特殊處理是getTourName然後對裏面的0-9數字進行replaceAll操作。

if (originSalesDTOList.get(0).getCompanyNo().equals("xx團編號")) {
            ...
            ...
                String tourDateStr = "2019" + z.getTourName().replaceAll("[^0-9]","");
                try {
                   ...
                   ...
                } catch (Exception e) {
                    return false;
                }
            }).collect(Collectors.toList());
           ...
           ...
        }

3、查看前端返回的tourName中的數據。可以看到,字段中的所有數字不光是代表日期。例如PVG-1227-J2M:J2M中還有個2。
在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述

問題出現的原因

String tourDateStr = "2019" + z.getTourName().replaceAll("[^0-9]","");

tourName中有多餘數字的,例如PVG-1227-J2M,通過以上處理過後,所有數字爲201912272,多出2,並不是代表日期的一段數字,解析失敗,try catch返回false。

解決方法

若格式固定爲 XXX-XX-XXX 的話 直接split - 取 索引 1。
split通過“-”分割字符串,例如PVG-1227-J2M,分割開爲PVG、1227與J2M,通過索引取第二個字段,索引爲1,取到1227,再加上2019,可以得出正確的日期20191227。

String tourDateStr = "2019" + z.getTourName().split("-")[1];

此處建議使用substring,原因tourName是用戶人爲錄入,格式不固定,不能確定一直有“-”,所以直接substring截取字符串,保持固定長度,減小出錯概率。

if (originSalesDTOList.get(0).getCompanyNo().equals("xx團編號")) {
            ...
            ...
				//substring截取4-8位
                String tourDateStr = "2019" + z.getTourName().substring(4,8);
                try {
                   ...
                   ...
                } catch (Exception e) {
                    return false;
                }
            }).collect(Collectors.toList());
            ...
            ...
        }

總結

這樣改過bug解決,測試通過。還需努力,多多向大佬們學習!
在這裏插入圖片描述

發佈了145 篇原創文章 · 獲贊 172 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章