我想做一个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