Java: replaceAll 没有像我认为的那样工作
Java: replaceAll doesn't work as I think it should
public class NewClass {
public static void main(String[] args) {
String piece = "10*2";
String ans = "20";
String problm = "10*2*9";
System.out.println(piece);
System.out.println(ans);
problm.replaceAll(piece, ans);
System.out.println(problm);
}
}
这是我的代码,当我打印 problm
时,它会打印:10*2*9
我想让它打印 20*9
,请告诉我我做错了什么
首先,使用replace
代替replaceAll
。 replaceAll
使用您可能不需要的正则表达式。
其次,Java 中的字符串 不可变 ,这意味着它们的值永远无法更改。您需要将 problm.replaceAll(piece, ans);
的值分配回 problm
:
problm = problm.replace(piece, ans);
这里有两个不同的问题:
replaceAll
使用正则表达式。如果您还不了解正则表达式,您可能需要 replace
。
您忽略了 replaceAll
的结果,并打印了原始字符串。您应该改为打印结果:
String solution = problm.replace(piece, ans);
System.out.println(solution);
(当然,你不一定非得用临时变量,用了也不必调用solution
)
您需要再次将其分配给问题。字符串是不可变的,无法更改。
public class NewClass {
public static void main(String[] args) {
String piece = "10*2";
String ans = "20";
String problm = "10*2*9";
System.out.println(piece);
System.out.println(ans);
problm.replaceAll(piece, ans);
System.out.println(problm);
}
}
这是我的代码,当我打印 problm
时,它会打印:10*2*9
我想让它打印 20*9
,请告诉我我做错了什么
首先,使用replace
代替replaceAll
。 replaceAll
使用您可能不需要的正则表达式。
其次,Java 中的字符串 不可变 ,这意味着它们的值永远无法更改。您需要将 problm.replaceAll(piece, ans);
的值分配回 problm
:
problm = problm.replace(piece, ans);
这里有两个不同的问题:
replaceAll
使用正则表达式。如果您还不了解正则表达式,您可能需要replace
。您忽略了
replaceAll
的结果,并打印了原始字符串。您应该改为打印结果:String solution = problm.replace(piece, ans); System.out.println(solution);
(当然,你不一定非得用临时变量,用了也不必调用
solution
)
您需要再次将其分配给问题。字符串是不可变的,无法更改。