我想做一個startStr.replaceAll(searchStr,replaceStr),我有兩個要求。替換可能包含正則表達式的整個標記
- searchStr必須是一個整個單詞,這意味着它必須有一個空格,字符串的開頭或字符串的結尾。
- 例如
- startStr = 「中進行確認,把你的帽子」
- 字符串searchstr = 「ON」
- 項replacestr = 「」
- 預期= 「確認,把你的帽子」
- 例如
- searchStr可能包含一個正則表達式
- eg
- startStr = 「刪除此*事」
- 字符串searchstr = 「*」
- 項replacestr = 「」
- 預期= 「刪除這個事情」
- eg
對於要求1,我發現這個工程:
startStr.replaceAll("\\b"+searchStr+"\\b",replaceStr)
對於需要2,我發現這工作:
startStr.replaceAll(Pattern.quote(searchStr), replaceStr)
但我不能讓他們一起工作:
startStr.replaceAll("\\b"+Pattern.quote(searchStr)+"\\b", replaceStr)
這裏是簡單測試用例失敗
startStr = "remove this * thing but not this*"
searchStr = "*"
replaceStr = ""
expected = "remove this thing but not this*"
actual = "remove this * thing but not this*"
我缺少什麼?
在此先感謝
我接受下面的答案被@zdanzig。 – kane
但我應該注意到我必須做一個額外的改變。 (\\ s | $)「,」「)只會替換第一個ON。 我結束了使用replaceFirst()和循環來取代所有。 – kane