您好我在替换包含#和@字符的确切字符串时遇到了麻烦。
我也试过mytext.replaceAll('\\b('+text+')\\b',"testtest");
,但也没有帮助。
完全字符串表示确切的单词。
String myStr = "test1 test";
myStr= myStr.replaceAll('\\b('+ Pattern.quote("test") +')\\b',"notest")//out put string "test1 notest"
//Exact word means only "test" is getting replace not "test" from "test1" word to notest1
String myStr1 = "test1 #test";
myStr1 = myStr1.replaceAll('\\b('+Pattern.quote("#test") +')\\b',"notest")//out put string "test1 #test", #test is not replaced
有人可以帮助我。提前致谢
答案 0 :(得分:1)
您有几个编译错误。
这段代码对我有用:
String myStr = "test1 test";
myStr= myStr.replaceAll("\\b("+ Pattern.quote("test") +")\\b","notest");
System.out.println(myStr);
String myStr1 = "test1 #test";
myStr1 = myStr1.replaceAll("\\b("+Pattern.quote("#test") +")\\b","notest");
System.out.println(myStr);
答案 1 :(得分:0)
我认为你想要的是:
mytext.replaceAll("(^|\\W)("+text+")($|\\W)", "$1"+replacement+"$3"))
您的解决方案中\b
的问题在于它只匹配[a-zA-Z0-9_]
和#
以及@
分隔您的单词而不是被包含在内。