JAVA删除字符串固定下标的字串
Posted Recently 祝祝
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA删除字符串固定下标的字串相关的知识,希望对你有一定的参考价值。
当你拿到的报文是这样的
"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);
搞定。
多存在多个不符合规定的数据然后你要删掉怎么操作呢?
这也很简单,如果你看了这一篇文章,你要更好的解决方式,期待一起探讨,学习进步(^-^)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,
解决方式如下,先使用正则看看有几个这样的不需要的符号,然后循环遍历几次,然后找到这部分,然后删除掉。
实现代码如下
# 全局变量
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();
end》》》
问题 = 机会。遇到问题的时候,内心其实是开心的,越大的问题意味着越大的机会。
以上是关于JAVA删除字符串固定下标的字串的主要内容,如果未能解决你的问题,请参考以下文章
UnityC#字串如何获取换行符号-最基础的字串处理方法,也最容易常见错误