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

在java中,如何用“$”替换任何字符串?,java,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);

使用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)

对我来说似乎很好

但是对于这样简单的事情,您可以避免使用正则表达式,而只使用string.replace


如果不需要正则表达式,请使用如下方法:

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

目前,您的代码运行良好。然而,如果你输入错误或是其他什么,并且确实

text = text.replaceAll("&1", "$");
那么,您必须避免替换:

text = text.replaceAll("&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);   
    }
}
您的问题标题显示了在java中如何用“$”替换任何字符串?但您的问题文本显示String text=这将被替换&1

如果您实际上试图替换美元符号,这是正则表达式中的一个特殊字符,则需要用反斜杠将其转义。您需要转义这个反斜杠,因为黑斜杠在Java中是一个特殊字符,所以假设美元符号是您想要的:

String text=这将被替换为$1

text=text.replaceAll\\$1,\\$

System.out.printlntext


编辑:澄清一些文本

我在用$sign替换时解决此错误的方法是用\\$like替换下面代码中的所有$like:

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

在Java 1.6上编译和运行这段代码不会产生任何异常……我运行了您的代码,它运行得很好。按照惯例,Java类的第一个字母必须用大写字母书写。在这种情况下,Test可能重复Bartzilla:惯例只建议Java类的第一个字母是大写字母。如果是小写,它仍然可以运行得很好。谢谢大家,这只是我的一个简单误解。String.replace只使用char作为参数@Marcelo还有另一个接受charsequence的字符串。@Bala R在javadoc中根本找不到它:s@Marcelo您的javadoc链接适用于1.4.2。它在javaoc中列出了1.5版本。不确定为什么它没有在1.6中列出,但它肯定在那里。此外,他们不会删除这样的方法;他们会反对的。
myString.replaceAll("\\$", "\\\\\\$");