簡體   English   中英

String.replaceAll()問題

[英]String.replaceAll() issue

我要替換的所有完全匹配

 fm.get('Order# 

在帶有值的冗長字符串中

 fm.get('Order__'

我使用了像這樣的語法:

    String calcStr = "return fm.get('Order#');";
    String fname = "Order#";
    String validfName = "Order__";

    String modifiedCalc1 = calcStr.replaceAll("fm.get('"+fname+"\\b", "fm.get('"+validfName);
    System.out.println(modifiedCalc1);

但我收到模式錯誤。

    Exception in thread "main" java.util.regex.PatternSyntaxException:
    Unclosed group near index 18
    \bfm.get('Order#\b
              ^
at java.util.regex.Pattern.error(Unknown Source)
at java.util.regex.Pattern.accept(Unknown Source)

您需要轉義開頭的括號和要點。

在這種情況下,也請刪除最后的\\b

String modifiedCalc1 = calcStr.replaceAll("fm\\.get\\('"+fname, "fm.get('"+validfName);

如果要使用需要正則表達式的API替換文字字符串,則可以使用Pattern.quote (用於模式端)和Matcher.quoteReplacement (用於替代端):

calcStr.replaceAll(Pattern.quote("fm.get('Order#"),
                   Matcher.quoteReplacement("fm.get('Order__"));

在這種情況下,似乎確實不需要正則表達式功能。

因此,可以使用純字符串替換來提高效率:

String modifiedCalc1 = calcStr.replace("fm.get('"+fname, "fm.get('"+validfName);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM