String inputString = args[0];
String out2 = inputString.replaceAll("I", "you");
String out1 = out2.replaceAll("you", "I");
System.out.println(out1);
以上是main方法中的代码。它应该替换“I”代表“你”,而“你”代替“我”,而只是后者调用replaceAll()可以工作(就像在out2中调用的那样)。在运行时,我将第一个参数作为输入字符串设置为“我讨厌你的一切”,它应该为你切换,反之亦然,而是输出“我讨厌关于我的一切”。
有什么想法吗?
干杯
答案 0 :(得分:12)
这是因为当您替换I's
时,所有you
都已成为you's
。
您需要使用这些替换的中间替换值来执行以下操作:
inputString = inputString.replaceAll("I", "_I_")
.replaceAll("you", "I")
.replaceAll("_I_", "you");
这假设您的中间值("_I_"
)不在您的字符串中。所以,你必须谨慎选择。
答案 1 :(得分:1)
你正在改变。你需要的是一个带有临时符号的交换,即#TEMP#代表我,我代表你,你代表#TEMP#。