java - 如何过滤字符串但保留一些标签

标签 java

如何过滤字符串?

String[] filterTags={<A>,<BC>,<A,<B};

filterTags 可以包含更多值,它可以包含一些字符串、数字或任何可以动态增长的内容

String name="<A><ABC><B><B"

我想要的是从filterTags数组中删除值但保留<ABC>因为它来自名称(字符串)

if (name.contains(filterTags[i])and ???)

我只需要一个简单的检查,如果名称(字符串)中包含filterTags值,则将删除它,但保持原样

提前谢谢您

最佳答案

好吧,你可以使用正则表达式来做到这一点:

String filtered = name.replaceAll("(<A>|<BC>|<A|<B)", "");
// filtered == "<ABC>"

现在的问题是创建该正则表达式字符串。您可以对其进行硬编码,因为看起来这就是您正在对数组执行的操作,或者您可以执行以下操作:

StringBuilder sb = new StringBuilder("(");
for (String token : filterTags) {
    sb.append(token);
    sb.append('|');
}
sb.deleteCharAt(sb.length() - 1); // Remove the last "|"
sb.append(')');
String regex = sb.toString();

请注意,只有当您的过滤器标记不包含任何正则表达式特殊字符时,这才有效

关于java - 如何过滤字符串但保留一些标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20249053/

相关文章:

java - 为什么我要使用 MockRunner 而不是普通/手动依赖注入(inject)?

java - Liberty server.xml 的 XSD 架构

java - 我如何让 ActionListener 监听按键?

java - 避免两个表中的两个查询

Java native 接口(interface) - C++ 不等待 java 函数完成

java - 当我的 web 项目通过 maven 部署时无法在 JBoss 7 上运行

java - 如何在保留最小字典顺序的同时删除重复字母

java - 通过命令行运行 Maven @Tests

java - 使用 Ajax 从 Servlet 中的 doGet 获取参数

java - 如何从java字符串中删除[]和()