如何在Java中替换字符串中的重复模式?

问题描述 投票:0回答:2

我有使用 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;
}

原始字符串在行的开头有

}}[{
,在实际结果中被删除,但模式仍然无法识别并找到正确的字符串来替换,不仅在开头而且在整个字符串中。有人知道该怎么做吗?

java rest intellij-idea web-api-testing
2个回答
0
投票
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
标志来替换所有出现的情况 这将执行全局正则表达式替换以替换每行上的该模式。

--希望这有帮助


0
投票

首先删除所有出现的

{"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>}}]}]}}
© www.soinside.com 2019 - 2024. All rights reserved.