JAVA刪除字符串固定下標字串的實現(xiàn)
此解決方式在企業(yè)中有所應用,適合Java初級開發(fā)學習,參考。
需要修改的報文
當你拿到的報文是這樣的
{ "input": { "sdfsn": "23u4209350-2", "fsfs": "128412094", "sgsgsg": "15821059", "inssgsuplc_admdfdfdvs": "125125332", "dgh": "125215312", "dfgdfg": "215215", "sdhdsh": "", "sdfsn": "", "shdfshdshdsh": "shsdh", "sdhdsh": "shsh.0", "shsdhsd": "1", "shsdh": "1607", "input": { "data": { "dhfsdhsd": "235325", "shsdhsdh": "03", "dgd": "BE0445360", "dfhfdh": "11", "dshshsd": 76.56, "ghjrfgj": "01", "grjf": "234623626", "hjfd": "236436", "djfdfgjdfj": "45634", "exp_Content": "{"gdsg":"01","gjfj":"658568","fjfj":"5675467","ghfjfgkj":"68568","vmgfvj":"658568","gfhjgfyk":"0","fghkfghkg":"5474567"}", "dfjgdfj": "", "dfjdfjgdfj": "56745745", "dfgjdfgjh": 45756758, "jdfgjhfdgj": 0, } } }, "output": { "output": { "r757": { "dhfsdhsd": "235325", "shsdhsdh": "03", "dgd": "BE0445360", "dfhfdh": "11", "dshshsd": 76.56, "ghjrfgj": "01", "grjf": "234623626", "hjfd": "236436", "djfdfgjdfj": "45634", "exp_content": "", "dfjgdfj": "", "dfjdfjgdfj": "56745745", "dfgjdfgjh": 45756758, "jdfgjhfdgj": 0, }, "sdfgsdfg": [ { "sgasgag": "4673476", "agasgdas": 5675467, "asgasgasg": "", "asdgasgas": 4567456754, "dhsdsxchsdh": 54675467, "sdfhsdhsdh": "5674756457" } ] }, "erherth": 0, } }
這一看就知道上邊的報文在postman里邊肯定會報錯,因為exp_Content,因此他又沒有用到,所以你想把他刪掉。其實也沒那么難刪
也就是用到了流轉字符串。字符串固定字符查找,然后進行字符串轉字符流,刪掉字符流中固定字符,之后再轉回來。因為字符串已經是final了所以很多用法都是使用字符串轉字符流實現(xiàn)的
實現(xiàn)代碼如下
private JSONObject resolveApplicationJson(HttpServletRequest request) { InputStream is = null; String json = null; try { is = request.getInputStream(); json = IOUtils.toString(is, "UTF-8"); json=json.replaceAll("\\r|\n|\t",""); int index= json.indexOf("exp_Content"); int indexfirst=json.indexOf("{", index); int indexlast=json.indexOf("}",index); if (index!=-1 && indexlast !=-1 &&indexfirst !=-1) { StringBuffer stringBuffer = new StringBuffer(json); stringBuffer.delete(indexfirst,indexlast+1); json=stringBuffer.toString(); } } catch (IOException e) { throw new RuntimeException("CANNOT get reader from request!", e); } finally { if (is != null) { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } } try { return new JSONObject(json); } catch (JSONException e) { throw new RuntimeException("CANOT CONVET JSON:[" + json + "] to JSONObject!", e); } }
多存在多個不符合規(guī)定的數(shù)據(jù)然后你要刪掉怎么操作呢?
這也很簡單,如果你看了這一篇文章,你要更好的解決方式,期待一起探討,學習進步(^-^)V
當你拿到的報文是這樣的。
{ "input": { "sdfsn": "23u4209350-2", "fsfs": "128412094", "sgsgsg": "15821059", "inssgsuplc_admdfdfdvs": "125125332", "dgh": "125215312", "dfgdfg": "215215", "sdhdsh": "", "sdfsn": "", "shdfshdshdsh": "shsdh", "sdhdsh": "shsh.0", "shsdhsd": "1", "shsdh": "1607", "input": { "data": { "dhfsdhsd": "235325", "shsdhsdh": "03", "dgd": "BE0445360", "dfhfdh": "11", "dshshsd": 76.56, "ghjrfgj": "01", "grjf": "234623626", "hjfd": "236436", "djfdfgjdfj": "45634", "exp_Content": "{"gdsg":"01","gjfj":"658568","fjfj":"5675467","ghfjfgkj":"68568","vmgfvj":"658568","gfhjgfyk":"0","fghkfghkg":"5474567"}", "dfjgdfj": "", "dfjdfjgdfj": "56745745", "dfgjdfgjh": 45756758, "jdfgjhfdgj": 0, } } }, "output": { "output": { "r757": { "dhfsdhsd": "235325", "shsdhsdh": "03", "dgd": "BE0445360", "exp_Content": "{"gdsg":"01","gjfj":"658568","fjfj":"5675467","ghfjfgkj":"68568","vmgfvj":"658568","gfhjgfyk":"0","fghkfghkg":"5474567"}", "dfhfdh": "11", "dshshsd": 76.56, "ghjrfgj": "01", "grjf": "234623626", "hjfd": "236436", "djfdfgjdfj": "45634", "exp_content": "{"gdsg":"01","gjfj":"658568","fjfj":"5675467","ghfjfgkj":"68568","vmgfvj":"658568","gfhjgfyk":"0","fghkfghkg":"5474567"}", "dfjgdfj": "", "dfjdfjgdfj": "56745745", "dfgjdfgjh": 45756758, "jdfgjhfdgj": 0, }, "sdfgsdfg": [ { "sgasgag": "4673476", "agasgdas": 5675467, "asgasgasg": "", "asdgasgas": 4567456754, "dhsdsxchsdh": 54675467, "sdfhsdhsdh": "5674756457" } ] }, "erherth": 0, } }
解決方式如下:根據(jù)需要寫出正則表達式,再使用正則看看有幾個這樣的不需要的符號,然后循環(huán)遍歷幾次,之后找到這部分,最后刪除掉。
實現(xiàn)代碼如下
# 全局變量 private static String REGEX = "exp_[c,C]ontent"; # 方式方法 Pattern p = Pattern.compile(REGEX); // 獲取 matcher 對象 Matcher m = p.matcher(JSON); List<Integer> list = new ArrayList(); while(m.find()){ list.add(m.start()); } int index=0; int indexfirst=0; int indexlast=0; for (int j = 0; j < list.size(); j++) { index=JSON.indexOf("exp_",indexlast); indexfirst=JSON.indexOf("{", index); indexlast=JSON.indexOf("}",index); StringBuffer stringBuffer =null; if (indexlast !=-1 &&indexfirst !=-1) { stringBuffer = new StringBuffer(JSON); stringBuffer.delete(indexfirst,indexlast+1); } JSON=stringBuffer.toString(); }
到此這篇關于JAVA刪除字符串固定下標字串的實現(xiàn)的文章就介紹到這了,更多相關JAVA刪除下標字串內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章

Double.parseDouble()與Double.valueOf()的區(qū)別及說明

Jackson忽略字段實現(xiàn)對字段進行序列化和反序列化

基于servlet的執(zhí)行原理與生命周期(全面解析)

Spring中@Validated和@Valid區(qū)別淺析