首页 > 解决方案 > 如何使用 replaceAll() 在 Java 中删除多个匹配项?

问题描述

您好,我正在尝试使用 Java 中的 replaceAll 方法删除字符串中的两个或多个单词,但我在正则表达式方面一点也不擅长,而且我无法做到。所以这里是代码:

    public static void main(String[] args) {
    String s= "@class::menu-select @id::calibration-content";
    System.out.println(s.replaceAll("[(@class::)(@id::)]",""));
}

但是当我运行它时,我得到的是以下文本menu-eet brton-ontent 顺便说一句,我试图删除的词是@class::@id:: 有人知道该怎么做吗?提前致谢!

标签: javaregex

解决方案


String#replaceAll接受一个正则表达式,并且您将其传递给您要替换的子字符串的字符类,这是不正确的。

相反,您可以更改正则表达式以专门查找子字符串:

System.out.println(s.replaceAll("@class::|@id::",""));

这将产生以下输出:

menu-select calibration-content

请记住,从 a 中删除子字符串的方法String比正则表达式更有效。


推荐阅读