2011-03-31 44 views
2

我有兩個問題。使用正則表達式與java string.replace

1:

字符串= XX YY **

我想刪除 「××」,因此字符串變成= 「YY * 」(XX/YY被固定,並且*可以是任何東西) 我想是這樣的,但它不工作:

string.replaceall("^(xx)$", ""); 

這難道不是應該用「」來代替「XX」的第一次出現?

(盧卡斯)

2解決:

字符串= XX YY **

我想刪除 「YY **」,讓字符串變成= 「XX」 我想的東西像這樣,但由於第一次沒有工作,我懷疑這不會。

string.replaceall("^(yy)*$", ""); 

未解

其實我措辭這一不足,

XX應該是**

所以XX是不固定

** ** YY應該 成爲* *這是第一個**

+0

你不應該修改你的問題,把你的問題的答案結果。它會變得複雜的其他stackoverflow用戶瞭解你在問什麼... – 2011-03-31 08:08:35

+0

是的,你是對的,我刪除了一些不必要的文字。 – 2011-03-31 08:14:22

回答

0

試試這個爲問題1

string.replaceFirst(" yy .*$", ""); 

編輯: 如果正則表達式是不是必須的,我們可以用這個第二個:

string.substring(0, string.indexOf(" yy"); 

編輯2:如果'\ n'將包含在字符串中,這適用於第二個:

string.replaceFirst(" yy [\\w\\W]*$", ""); 
+0

第二個不起作用。 – 2011-03-31 08:04:33

+0

@ Tunca Ersoy:爲第二種情況添加兩種解決方案。 – RollingBoy 2011-03-31 08:25:10

3

在這兩種情況下,y在你試圖替換的前後,你會使用^$。這會嘗試將整個字符串與您想要刪除的位匹配。這就是爲什麼它不能清除任何東西。

如果你真的只想要替換的xx第一發生,你應該考慮創建一個Pattern,它匹配對文本,並使用Matcher.replaceFirst進行更換。對於第二個

string.replaceFirst("^xx ", "");