String.replaceAll() - 将“I”替换为“You”,反之亦然

时间:2013-02-16 18:41:09

标签: java string replaceall

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

以上是main方法中的代码。它应该替换“I”代表“你”,而“你”代替“我”,而只是后者调用replaceAll()可以工作(就像在out2中调用的那样)。在运行时,我将第一个参数作为输入字符串设置为“我讨厌你的一切”,它应该为你切换,反之亦然,而是输出“我讨厌关于我的一切”。

有什么想法吗?

干杯

2 个答案:

答案 0 :(得分:12)

这是因为当您替换I's时,所有you都已成为you's

您需要使用这些替换的中间替换值来执行以下操作:

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

这假设您的中间值("_I_")不在您的字符串中。所以,你必须谨慎选择。

答案 1 :(得分:1)

你正在改变。你需要的是一个带有临时符号的交换,即#TEMP#代表我,我代表你,你代表#TEMP#。