2013-11-03 108 views
0

你好,我有一個字符串,當我嘗試使用替代方法循環它不工作替換法不能正常工作

String phrase="hello friend"; 
String[] wordds=phrase.split(" "); 
String newPhrase="sup friendhello weirdo"; 
for (int g=0;g<2;g++) 
{   
    finalPhrase+=newPhrase.replace(wordds[g],""); 
} 
System.out.println(finalPhrase); 

它打印出來sup hello weirdo,我希望它打印sup weirdo

我在做什麼錯?

+1

爲什麼要追加'+ ='替換的輸入? – 2013-11-03 15:57:54

+0

字符串是不可變的。 –

回答

1

你在做什麼,是保持替換詞組追加到另一個

newPhrase = newPhrase.replace(wordds[g],""); 
+2

您需要添加一些解釋 - 代碼只有答案不幫助OP。 –

5

讓我們調試一起。

wordds = ["hello", "friend"]

newPhrase = "sup friendhello weirdo"

然後你在一些g運行從01(應該是從0wordds.length

newPhrase.replace(wordds[g],"");的確會取代你想要的,但是當你調試你的程序,你會發現,你是使用+=代替:

newPhrase=newPhrase.replace(wordds[g],""); 

提示生活:使用調試器,它的存在可以幫助您

4

Tr的。 Y本:

String phrase = "hello friend"; 
String[] wordds = phrase.split(" "); 
String newPhrase = "sup friendhello weirdo"; 
for (int g = 0; g < 2 ; g++) {   
    newPhrase = newPhrase.replace(wordds[g], ""); 
} 
System.out.println(newPhrase); 

======================================== ===========

更新,你需要更正

  1. 您需要刪除CONCAT oprator(+),當您嘗試

    幾件事情替換一個句子中的特定單詞。只需更換

  2. 每次輸入你正在服用的初始聲明的字符串的循環時間後,分配給它,而不是你需要使用這是越來越每次

+0

它可能看起來很平凡,但你應該添加一個解釋。 –

+0

@SteveP添加了解釋 – upog

0

這應該做的伎倆更新字符串:

String phrase="hello friend"; 
String[] wordds=phrase.split(" "); 
String newPhrase="sup friendhello weirdo"; 
String finalPhrase=newPhrase; 
for (int g=0;g<wordds.length;g++) 
{   
    finalPhrase=finalPhrase.replace(wordds[g],""); 
} 
System.out.println(finalPhrase); 

首先,您將finalPhrase指定給您的newPhrase。然後你遍歷所有的分詞(我把你的魔術常量2改成分詞數wordds.length,每個詞在finalPhrase字符串中都會被替換,得到的字符串看起來像sup weirdo(它在詞之間有兩個空格)。

您可以使用answer from here清理多餘的空格:

System.out.println(finalPhrase.trim().replaceAll(" +", " ")); 
1
從一個立即解決的建議

除此之外,您還可以考慮基於正則表達式的解決方案,沒有循環:

String phrase="hello friend"; 
String regex=phrase.replace(' ', '|'); 
String newPhrase="sup friendhello weirdo"; 
String finalPhrase=newPhrase.replaceAll(regex,""); 
System.out.println(finalPhrase); 

或者,更簡潔地說:

System.out.println("sup friendhello weirdo" 
        .replaceAll("hello friend".replace(' ','|'), 
           ""));