• 技术文章 >Java >java教程

    JAVA怎么删除字符串固定下标字串

    王林王林2023-04-13 17:31:21转载68

    需要修改的报文

    当你拿到的报文是这样的

    {
        "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了所以很多用法都是使用字符串转字符流实现的

    实现代码如下

        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);
            }
        }

    多存在多个不符合规定的数据然后你要删掉怎么操作呢?

    当你拿到的报文是这样的。

    {
        "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,
        }
    }

    解决方式如下:根据需要写出正则表达式,再使用正则看看有几个这样的不需要的符号,然后循环遍历几次,之后找到这部分,最后删除掉。

    实现代码如下

    # 全局变量
    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怎么删除字符串固定下标字串的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:亿速云,如有侵犯,请联系admin@php.cn删除
    专题推荐:Java
    上一篇:Java多线程断点复制的方法是什么 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • Java 项目工程实例代码分析• Java中如何实现Runnable接口?• Java中如何定义数据类型• Java中反射的含义和作用是什么?• 如何使用Java编写简单的五子棋游戏
    1/1

    PHP中文网