Java:replaceAll不起作用,因为我认为它应该

时间:2015-01-21 02:57:59

标签: java replaceall

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,请告诉我我做错了什么

3 个答案:

答案 0 :(得分:5)

首先,使用replace代替replaceAllreplaceAll使用您可能不想要的正则表达式。

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

problm = problm.replace(piece, ans);

答案 1 :(得分:2)

这里有两个不同的问题:

  1. replaceAll适用于正则表达式。如果您还没有理解正则表达式,那么您可能需要replace代替。

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

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

    (当然,您不必使用临时变量,如果您这样做,则不必将其称为solution

答案 2 :(得分:1)

您需要再次将其分配给problm。 String是不可变的,不能更改。