現在、文字列の配列があり、それぞれにランダムな長さのランダムな文字が含まれています。すべての「A」を「X」に置き換えたいのですが、どうすればこれを実現できますか?
例:
String str = "ABCDEFGAZYXW";
文字列をにしたいと思い"XBCDEFGXZYXW"
ます。私は使用しようとしました:
str.replaceAll("A", "X");
ただし、文字列は変更されません。どんな助けでも大歓迎です!
str = str.replaceAll("A", "X");
このreplaceAll
メソッドは文字列を変更しませんが(Javaの文字列は不変です)、新しいString
オブジェクトを作成し、関数呼び出しの結果としてそれを返します。このようにして、古いオブジェクトは変更されず、単に参照されない新しいオブジェクトへの参照を変更します。
Java の文字列は不変であり、 を使用して正しい軌道に乗ってreplaceAll()
いますが、メソッドによって返された新しい文字列を元の文字列などのどこかに保存する必要があります (変更してもかまわない場合)。つまり、次のとおりです。
String str = "ABCDEFGAZYXW";
str = str.replaceAll("A", "X"); // notice the assignment!
単一の文字を別の文字に置き換えるだけで、次を使用できますreplace
。
str = str.replace('A', 'X');
他の多くの人がすでに投稿しているように、これも機能しますが、このメソッドの最初のパラメーターは正規表現String.replaceAll
であることに注意してください。これを認識していない場合、すべての場合で期待どおりに機能しない可能性があります。
// Replace '.' with 'X'.
str = str.replaceAll(".", "X"); // Oops! This gives "XXXXXXXXXXXX"
結果を割り当てる必要があります。
str = str.replaceAll("A", "X");
str = str.replaceAll("A", "X"); を試してください。
文字列は Java では不変です。
基本的にreplaceAll関数は2つのパラメータを取ります。1つは削除したい文字列、2つ目は置換したい新しい文字列で、戻り値の型はStringです。
置換後に新しい文字列が返されます。
ここでは、そのメソッドを呼び出していますが、その新しい値を変数に格納していません。このように置き換えたり印刷したりできます
String string = "My Old String with Old value";
System.out.println(string.replaceAll("Old", "New"));
//Or
string = string.replaceAll("Old", "New");
System.out.println(string);
したがって、コードでは、それを文字列オブジェクトに格納する必要があります。
str = str.replaceAll("A", "X");