java - 如何使用 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:: 有人知道该怎么做吗?提前致谢!
解决方案
String#replaceAll
接受一个正则表达式,并且您将其传递给您要替换的子字符串的字符类,这是不正确的。
相反,您可以更改正则表达式以专门查找子字符串:
System.out.println(s.replaceAll("@class::|@id::",""));
这将产生以下输出:
menu-select calibration-content
请记住,从 a 中删除子字符串的方法String
比正则表达式更有效。
推荐阅读
- elasticsearch - 将 Elasticsearch 从本地机器迁移到在线服务器
- javascript - 深度优先搜索(递归)到达叶节点后如何工作?
- crystal-reports - 继承了 Crystal Reports 2008 R2 项目 - 我有哪些选择?
- javascript - 如何使用 jsPDF 将 PDF 保存在数据库中?
- c# - 使用线程时无法访问 HttpContext.Current
- c# - 使用 Execute Scalar (C#) 从表中获取数据的问题
- c# - 即时创建 .NET/.NET Core/.NET Standard C# 类库以进行测试
- javascript - 当 package.json 中有 1.24.2 版本时,npm install 会尝试安装 grpc 1.20.0
- python - 导入 Pygame
- java - 在 Spring 中验证失败时枚举字段上的自定义错误消息