我有使用 Java/REST API 运行的 intelliJ,但在删除和替换特定格式的字符串时遇到问题。
响应字符串:
{“isSuccess”:[{“频率”:}]}]}}{“isSuccess”:[{“频率”:}]}]}}{“isSuccess”:
[{“频率”: }] }]}}
预期字符串:
[{"频率":}]},{"频率":
}]},{"频率": }}]}]}}
实际字符串:
[{"频率":
}]}]}}[{"频率": }]}]}}[{"频率":" }]}]}}
代码:
public static String getResponseString(String response){
String getIDErrorCodeString = response.split("\\[")[0];
String getStringWithoutIDErrorCode = response.replaceAll(Pattern.quote(getIDErrorCodeString), "");
String getStringwithBracket = "}]}]" + getStringWithoutIDErrorCode + "}}[{";
String actualResults = getStringWithoutIDErrorCode.replaceAll(Pattern.quote(getStringwithBracket), ",");
return actualResults;
}
原始字符串在行的开头有
}}[{
,在实际结果中被删除,但模式仍然无法识别并找到正确的字符串来替换,不仅在开头而且在整个字符串中。有人知道该怎么做吗?
public static String getResponseString(String response){
String getIDErrorCodeString = response.split("\\[")[0];
String getStringWithoutIDErrorCode = response.replaceAll(Pattern.quote(getIDErrorCodeString), "");
String getStringwithBracket = "}]}]" + getStringWithoutIDErrorCode + "}}[{";
String pattern = Pattern.quote(getStringwithBracket);
String actualResults = getStringWithoutIDErrorCode.replaceAll(pattern, ",", Pattern.MULTILINE);
return actualResults;
}
尝试使用
Pattern.quote()
转义正则表达式的模式字符串,然后
添加 Pattern.MULTILINE
标志,以便 ^
和 $
匹配每行的开头/结尾,之后使用正则表达式中的 g
标志来替换所有出现的情况
这将执行全局正则表达式替换以替换每行上的该模式。
--希望这有帮助
首先删除所有出现的
{"isSuccess":<testData>
。
s = s.replace("{\"isSuccess\":<testData>", "");
然后,将
]}}[
替换为 ,
。
s = s.replace("]}}[", ",");
最后,在
n − 6处插入
}
。
s = s.substring(0, s.length() - 6) + '}' + s.substring(s.length() - 6);
输出
[{"frequency":<testData>}]},{"frequency":<testData>}]},{"frequency":<testData>}}]}]}}