String ss="$=2323¥=";
System.out.println(ss.replaceAll("$", "f").replaceAll("¥", "").replaceAll(",", ""));
执行解果:$=2323=f 
很奇怪$没有被替换,而且最后多了一个f。请大家看看为啥?

解决方案 »

  1.   

    方法里面的参数是正则,有些需要转义
    API:
    public String replaceAll(String regex,
                             String replacement)使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。 
    调用此方法的 str.replaceAll(regex, repl) 形式与以下表达式产生的结果完全相同: Pattern.compile(regex).matcher(str).replaceAll(repl)
    注意,在替代字符串中使用反斜杠 (\) 和美元符号 ($) 与将其视为字面值替代字符串所得的结果可能不同;请参阅 Matcher.replaceAll。如有需要,可使用 Matcher.quoteReplacement(java.lang.String) 取消这些字符的特殊含义。