> Java > java지도 시간 > JAVA에서 고정된 아래 첨자 문자열을 삭제하는 방법

JAVA에서 고정된 아래 첨자 문자열을 삭제하는 방법

王林
풀어 주다: 2023-04-13 17:31:21
앞으로
1723명이 탐색했습니다.

需要修改的报文

当你拿到的报文是这样的

{
    "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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿