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'syou你更换you's.

您需要为这些类型的替换使用中间替换值才能像这样工作:

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

这假设您的中间值("_I_")尚未在您的字符串中。因此,您必须谨慎选择。

于 2013-02-16T18:43:52.450 回答
1

你变回来了 你需要的是一个临时符号的交换,即#TEMP#代表我,我代表你,你代表#TEMP#。

于 2013-02-16T18:44:03.037 回答