Java 模式,用于从映射器生成的字符串中清除其他字符周围的引号



我需要将 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);

最新更新