Heim > Java > javaLernprogramm > Hauptteil

So löschen Sie eine feste tiefgestellte Zeichenfolge in JAVA

王林
Freigeben: 2023-04-13 17:31:21
nach vorne
1683 Leute haben es durchsucht

需要修改的报文

当你拿到的报文是这样的

{
    "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,
    }
}
Nach dem Login kopieren

这一看就知道上边的报文在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);
        }
    }
Nach dem Login kopieren

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

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

{
    "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,
    }
}
Nach dem Login kopieren

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

实现代码如下

# 全局变量
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();
        }
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo löschen Sie eine feste tiefgestellte Zeichenfolge in JAVA. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage