1
String inputString = args[0];
String out2 = inputString.replaceAll("I", "you");
String out1 = out2.replaceAll("you", "I");
System.out.println(out1);

上記は main メソッドのコードです。「I」を「you」に、「you」を「I」に置き換えるはずですが、代わりに後者の replaceAll() の呼び出しのみが機能します (out2 で呼び出されたものと同様)。実行時に、入力文字列として使用される最初の引数を「I はあなたのすべてが嫌いです」に設定しました。

何か案は?

乾杯

4

2 に答える 2

12

それは、 を交換するまでに、がすべて になっI'sているからです。youyou's

このような置換を次のように機能させるには、中間置換値を使用する必要があります。

inputString = inputString.replaceAll("I", "_I_")
                         .replaceAll("you", "I")
                         .replaceAll("_I_", "you");

これは、中間値( "_I_") がまだ文字列に含まれていないことを前提としています。そのため、慎重に選択する必要があります。

于 2013-02-16T18:43:52.450 に答える
1

あなたは元に戻っています。必要なのは、一時的なシンボルとのスワップです。つまり、I の場合は #TEMP#、あなたの場合は I、#TEMP# の場合は you です。

于 2013-02-16T18:44:03.037 に答える