我需要将 JSON 映射器生成的字符串序列替换为休耕:
:"{ -> :{
}"} -> }}
看起来如何模式?
更新:完整字符串示例
{"method":"createInvoice","params":"{"btcDue":null,"btcPaid":null,
"btcPrice":null,"currency":"PLN","currentTime":null,
"exceptionStatus":null,"expirationTime":null,
"guid":"99250130","id":null,"invoiceTime":null,
"paymentUrls":null,"price":1.23,"rate":null,
"status":null,"transactions":null,"url":null
}"}
但假设我们将有更多的实例要替换,例如 2 :)
澄清一下:安卓字符串方法
public String replace(CharSequence target, CharSequence replacement) {
String replacementStr = replacement.toString();
String targetStr = target.toString();
// Special case when target == "".
// .. cut
// This is the "regular" case.
int lastMatch = 0;
StringBuilder sb = null;
for (;;) {
int currentMatch = indexOf(this, targetStr, lastMatch);
if (currentMatch == -1) {
break;
}
if (sb == null) {
sb = new StringBuilder(count);
}
sb.append(this, lastMatch, currentMatch);
sb.append(replacementStr);
lastMatch = currentMatch + targetStr.count;
}
if (sb != null) {
sb.append(this, lastMatch, count);
return sb.toString();
} else {
return this;
}
}
public String replaceAll(String regex, String replacement) {
return Pattern.compile(regex).matcher(this).replaceAll(replacement);
}
没什么难的:
String result = "{"method":"createInvoice","params":"{"btcDue":null,"btcPaid":null,"btcPrice":null,"currency":"PLN","currentTime":null,"exceptionStatus":null,"expirationTime":null,"guid":"99250130","id":null,"invoiceTime":null,"paymentUrls":null,"price":1.23,"rate":null,"status":null,"transactions":null,"url":null}"}"
.replace(":"{", ":{")
.replace("}"}", "}}");
System.out.println(result);
您可以使用
前瞻/后视结构匹配由 :
+ {
和 }
+ }
括起来的所有引号:
(?<=})"(?=})|(?<=:)"(?={)
将此传递给replaceAll
以删除引号(演示)。
搜索方式
"
然后将其替换为 "
原文
:"{
}"}
结果
:{
}}
JAVA 代码
import java.util.regex.Matcher;
import java.util.regex.Pattern;
final String regex = "\"";
final String string = ":"{ -> :{ n"
+ "}"} -> }} ";
final String subst = "";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
// The substituted value will be contained in the result variable
final String result = matcher.replaceAll(subst);
System.out.println("Substitution result: " + result);