0

嗨,我在替换包含 # 和 @ 字符的确切字符串时遇到了麻烦。我也尝试过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

有人可以帮帮我吗。提前致谢

4

2 回答 2

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);
于 2013-07-03T08:10:06.620 回答
0

我想你想要的是:

mytext.replaceAll("(^|\\W)("+text+")($|\\W)", "$1"+replacement+"$3"))

您的解决方案中的问题\b在于它仅匹配[a-zA-Z0-9_]并分隔您#@单词,而不是包含在内。

于 2013-07-03T08:09:57.490 回答