使用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)
答案 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);
编辑:澄清一些文字