繁体   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