str.replace zickt rum



  • String s = ("-(-(-(7)))");
            s = s.replace("(-(", "(0-(");   // -(0-(-(7)))
            System.out.println(s);
            s = s.replace("(-(", "(0-(");   // -(0-(0-(7)))
            System.out.println(s);          // warum erst beim zweiten mal?
    

    Kann das jemand nachvollziehen? Ich dachte immer, das String.replace alle vorkommen des gesuchten Teilstrings änder?



  • gleiches verhalten auch bei ziffern

    String s = ("212121");
            s = s.replace("121", "1021");
            System.out.println(s);
            s = s.replace("121", "1021"); // erst beim zweiten mal!
            System.out.println(s);
    


  • sehr seltsam schrieb:

    Ich dachte immer, das String.replace alle vorkommen des gesuchten Teilstrings änder?

    Und wie oft kommt der Teilstring in s vor? Einmal.

    Die Funktion durchsucht nicht die Zwischenergebnisse nach jeder einzelnen Ersetzung. Das wäre auch keine gute Idee, denn dann könnte es leicht passieren, dass das nicht mehr terminiert.