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代替replaceAllreplaceAll 使用您可能不需要的正则表达式。

其次,Java 中的字符串 不可变 ,这意味着它们的值永远无法更改。您需要将 problm.replaceAll(piece, ans); 的值分配回 problm:

problm = problm.replace(piece, ans);

这里有两个不同的问题:

  1. replaceAll 使用正则表达式。如果您还不了解正则表达式,您可能需要 replace

  2. 您忽略了 replaceAll 的结果,并打印了原始字符串。您应该改为打印结果:

    String solution = problm.replace(piece, ans);
    System.out.println(solution);
    

    (当然,你不一定非得用临时变量,用了也不必调用solution

您需要再次将其分配给问题。字符串是不可变的,无法更改。