2013-02-16 56 views
1
String inputString = args[0]; 
String out2 = inputString.replaceAll("I", "you"); 
String out1 = out2.replaceAll("you", "I"); 
System.out.println(out1); 

以上是主要方法中的代碼。它應該用「我」代替「你」,用「你」代替「我」,但是隻有後者調用replaceAll()才能工作(如在out2中調用的那樣)。在運行時,我已經設置了第一個參數作爲輸入字符串,以「我討厭你的一切」,它應該爲你切換我,反之亦然,而是輸出「我討厭我的一切」。String.replaceAll() - 將「I」替換爲「You」,反之亦然

任何想法?

乾杯

回答

12

這是因爲所有的I's已經成爲you,通過更換you's的時間。

您需要使用這些種替代的中間值替換像這樣的工作:

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

這個假設,你的中間值("_I_")是不是已經在你的字符串。所以,你必須謹慎選擇。

+0

此外,中間值僅適用於首先在文本中不存在中間值的假設。 – nhahtdh 2013-02-16 18:46:27

+0

@nhahtdh。是的。 :) – 2013-02-16 18:48:26

+0

當然,總是有道理 - 謝謝! :) – 2013-02-16 20:18:55

1

你正在改變。您需要的是與臨時符號的交換,即#TEMP#表示我,我表示你,#表示TEMP#。

+0

這隻適用於臨時符號從不出現在文本中的假設。 – nhahtdh 2013-02-16 18:45:32

+0

替代「從未出現在文本中的臨時符號」。 – 2013-02-20 19:11:18

相關問題