2012-05-19 88 views
20

我試圖使用函數replace()replaceAll()刪除某個字符串中的特定字詞,但這些字詞會移除該字詞的所有字母,即使它是另一個字詞的一部分!刪除字符串中的特定字詞

實施例:

String content = "is not like is, but mistakes are common"; 
content = content.replace("is", ""); 

輸出:"not like , but mtakes are common"

期望的輸出:"not like , but mistakes are common"

如何從一個字符串替代全字?

+0

如果它有Java標記,當然**這是在Java ** –

+0

您是否需要使用replace?用字符串?你是否需要搜索不同的字符串來替換? – UNECS

+0

你應該添加你想要替換的所有字符串的哪一部分,也許你可以使用正則表達式來完成工作 –

回答

36

見鬼,

String regex = "\\s*\\bis\\b\\s*"; 
content = content.replaceAll(regex, ""); 

記住,你需要使用replaceAll(...)使用正則表達式,而不是replace(...)

  • \\b給你單詞邊界
  • \\s*小恩小惠任何白色單詞兩邊的空格被刪除(如果你想刪除它)。
+0

非常感謝,做了它=) –

+1

@MiDoBasha:不客氣 –

+0

還有一個問題。如果說句「狗是貓」,那麼這段代碼就會從「is」這個詞的兩邊刪除空格,並使其成爲'dogcat'。我認爲最好是編寫content = content.replaceAll(regex,「」)',然後修剪兩端的空格 – Jasir

0

你可以嘗試用「」代替「is」。前一個和後一個空間被替換爲單個空間。

更新:

,使之成爲第一部作品「就是」中的一句話,也做替換另一個的「是」爲「」。替換第一個和第一個空格,並使用空字符串。

+1

將不適用於句子中的第一個「is」。 –

+0

由於您可能需要處理該案件,特別是因爲大寫字母,可能會有多個'replaceAll()'調用?包括一個'replaceAll(「是\」,「」);'或其他可以捕捉最後一個... –

+1

你是對的。謝謝。我已經更新了包含該案例的答案。如果字符串以「is」結尾,那麼也必須添加該情況,總共增加3個。此外,與Rob相似,大寫情況也應該在額外的replaceAll調用中考慮。 –

5

content = content.replaceAll("\\Wis\\W|^is\\W|\\Wis$", "");

+0

你不需要'replaceAll(...)'而不是'替換(...)'來使用正則表達式的魔力嗎? –

+0

@HovercraftFullOfEels抱歉沒有測試。測試後編輯。 :) – Chip