如何用java中的“$”替换任何字符串?

时间:2011-05-27 18:38:43

标签: java

使用replaceAll()给了我一个rexex异常。

这是我正在使用的代码:

public class test {

    public static void main(String[] args) {
        String text= "This is to be replaced &1 ";
        text = text.replaceAll("&1", "&");
        System.out.println(text);   
    }
}

例外:

Exception in thread "main" java.lang.IllegalArgumentException: Illegal group reference
    at java.util.regex.Matcher.appendReplacement(Unknown Source)
    at java.util.regex.Matcher.replaceAll(Unknown Source)
    at java.lang.String.replaceAll(Unknown Source)
    at test.main(test.java:7)

6 个答案:

答案 0 :(得分:4)

似乎对我来说很好。 http://ideone.com/7qR6Z

但是对于这么简单的事情,你可以避免使用正则表达式并只使用string.replace()

text = text.replace("&1", "&");

答案 1 :(得分:2)

如果您不想要正则表达式,请使用String#replace方法,如下所示:

"This is to be replaced &1 ".replace("&1", "&")

答案 2 :(得分:2)

使用“$”符号替换此错误的解决方案是将所有“$”替换为“\\ $”,如下面的代码所示:

myString.replaceAll("\\$", "\\\\\\$");

答案 3 :(得分:1)

您可以使用Pattern.quote()将任何字符串编译为正则表达式。尝试:

public class test {
   public static void main(String[] args) {
        String text= "This is to be replaced &1 ";
        text = text.replaceAll(Pattern.quote("&1"), "&");
        System.out.println(text);   
    }
}

答案 4 :(得分:0)

目前,您的代码运行正常。但是,如果您输入错误或其他内容并实际拥有

text = text.replaceAll("&1", "$");

然后你必须逃避替换:

text = text.replaceAll("&1", "\\$");

答案 5 :(得分:0)

您的问题标题显示为how do i replace any string with a “$ ” in java?,但您的问题文字显示为String text= "This is to be replaced &1 "

如果您实际上尝试替换美元符号,这是正则表达式中的特殊字符,则需要使用反斜杠对其进行转义。你需要逃避反斜杠,因为blackslash是Java中的一个特殊字符,所以假设美元符号是你想要的:

String text = "This is to be replaced $1 ";

text = text.replaceAll("\\$1", "\\$");

System.out.println(text);

编辑:澄清一些文字