如何在java中替换包含字符@和#的精确字符串

时间:2013-07-03 07:37:42

标签: java groovy

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

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

2 个答案:

答案 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_]#以及@分隔您的单词而不是被包含在内。