我的代码不喜欢美元符号,必须在替换中保持可变。
String s1= "this is amount <AMOUNT> you must pay";
s1.replaceAll("<AMOUNT>", "$2.60");
System.out.print(s1);
我有例外java.lang.IllegalArgumentException: Illegal group reference
我冒险获得字符串"this is amount $2.60 you must pay"
如何更改我的代码以获得所需的结果?
答案 0 :(得分:5)
如果您不需要使用正则表达式(您似乎没有),请改用replace
:
s1 = s1.replace("<AMOUNT>", "$2.60");
答案 1 :(得分:3)
您必须像这样更改代码:
String s1= "this is amount <AMOUNT> you must pay";
s1 = s1.replaceAll("<AMOUNT>", "\\$2.60");
System.out.print(s1);
1)转义$
字符
2)您需要保存replaceAll
方法的结果,因此请再次将其分配给s1
。
答案 2 :(得分:2)
只需使用替换。无需使用正则表达式。
s1 = s1.replace("<AMOUNT>", "$2.60");
答案 3 :(得分:0)
正则表达式使用特殊字符$
来表示表达式中的组。这就是你迷茫的原因。如果你想要文字的东西,就逃避吧。
public static void main(String[] args) {
String s1= "this is amount <AMOUNT> you must pay";
System.out.print(s1.replaceAll("<AMOUNT>", "\\$2.60"));
}
答案 4 :(得分:0)
不使用正则表达式时,应使用replace()。
此外,您应该将结果字符串存储在其他位置,例如
String s1 = "this is amount <AMOUNT> you must pay";
String s2 = s1.replace("<AMOUNT>", "$2.60");
System.out.println(s2);
答案 5 :(得分:0)
在\\
符号前使用双斜杠$
。
String s1 = "this is amount <AMOUNT>you must pay";
s1 =s1.replaceAll("<AMOUNT>", "\\$2.60");
System.out.print(s1);