簡體   English   中英

無法替換Java中的字符串出現?

[英]Unable to replace String occurence in java?

我在Java中有一個StringBuilder對象,該對象存儲一些使用Java程序動態創建的json格式的數據。 我正在嘗試做的是將StringBuilder對象中的字符串一替換為字符串二。 我寫了下面的代碼來替換,但無法正常工作? 有什么理由或有效的方法來簡單地替換字符串?

StringBuilder json = new StringBuilder ();

public void method1(){

String replacelater =   "   {\"name\":\" <font color=\\\"#FF0000\\\">"+funcvp_name4.trim()+" <\\/font> \",  \"children\":[  ";

callingmethod2();

String replacewith = "   {\"name\":\" <font color=\\\"#FF0000\\\">"+funcvp_name4.trim()+totalempforfuncvp+" <\\/font> \",  \"children\":[  ";

String jsonnew = json.toString();
jsonnew.replaceFirst(replacelater, replacewith);

json.setLength(-1);
json.append(jsonnew);
}

錯誤:

Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal repetition near index 2
   {"name":" <font color=\"#FF0000\">(7H Cost 806) <\/font> ",  "children":[  
  ^
    at java.util.regex.Pattern.error(Unknown Source)
    at java.util.regex.Pattern.closure(Unknown Source)
    at java.util.regex.Pattern.sequence(Unknown Source)
    at java.util.regex.Pattern.expr(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.util.regex.Pattern.<init>(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.lang.String.replaceFirst(Unknown Source)
    at CreateChart.iterateFuncVPNamesFromArrayList(CreateChart.java:496)
    at CreateChart.getDataFromEMPHCForFuncVp(CreateChart.java:110)
    at CreateChart.main(CreateChart.java:964)

您的代碼有兩個主要問題。 首先, replaceFirst的第一個參數被視為正則表達式,因此反斜杠和花括號之類的字符是元字符,而不是要搜索的文字對象-若要將文字字符串與replaceFirst匹配, replaceFirst需要使用Pattern.quote

其次,java中的字符串是不可變的replaceFirst不會修改調用它的字符串,它會以新字符串的形式返回結果。

String jsonnew = json.toString().replaceFirst(
  Pattern.quote(replacelater), replacewith);

或者, replace方法將其第一個參數視為文字字符串而不是正則表達式,但它將替換所有出現的內容,而不僅僅是第一個。

暫無
暫無

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

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