2012-06-20 83 views
1

比方說,我有一個這樣的字符串:刪除所有除特殊字

String test = "hfikoebndolahsdHEL123LOkjahhsdqhuihs"; 

然後我想刪除所有除「HEL123LO」但這個數字也能像653,它不會刪除無論如何。那可能嗎?

我希望你能理解我!

在此先感謝。

(對不起,壞的英文)。

+1

在您的輸入中可能有多個版本的HEL * LO?如果是的話,你想保留所有這些嗎? – Attila

+0

你是什麼意思? – GuiceU

+0

aHEL13LObHEL14LOc是可能的輸入嗎?如果是的話,你想要的結果是HEL12LO,HEL14LO或HEL13LOHEL14LO? – Attila

回答

4

如果您String將是你提到的品種,"hfikoebndolahsdHEL123LOkjahhsdqhuihs"只數的喜好變化之間,並且要保留HEL123LO和信件的其餘部分是有點像在您的示例,你可以做一個簡單的子串。我知道這可能不是最好的解決方案,但只是提出一個替代方案。

test = test.substring(test.indexOf("H"),(test.lastIndexOf("O")+1)); 
+0

你在開玩笑吧?你的代碼會保留所有這些輸入:'「HkjshdfshhsdkjhfO」'。不好。 – Bohemian

+0

@Bohemian我在我的回答中已經明確地提到過,如果'字符串'是OP所提到的類型,那麼周圍的字母就像OP給出的例子那樣(即小寫)。這就是說,我從來沒有說過這是「解決方案」。我剛纔說這是OP提出的具體情況的替代方案。 :-) –

+0

謝謝!爲我的使用工作真的很棒。 :) – GuiceU

14

使用String.replaceAll()方法和正確的正則表達式。

test = test.replaceAll(".*(HEL\\d{3}LO).*", "$1"); 

此正則表達式整個輸入相匹配,並與匹配的組(組編號1)替換它。

+0

這將只保留一個實例。從問題中不清楚是否可以有多個,如果是,是否保留所有 – Attila

+0

@Attila公平點,但問題的標題說「** a **特殊詞」,所以我只假設一個。如果保持倍數,它會變得稍微複雜一些 - 幾乎沒有優雅。 – Bohemian