我怎样才能过滤字符串?
String[] filterTags={<A>,<BC>,<A,<B};
filterTags可以包含更多值,它可以包含一些字符串,数字或任何可以动态增长的内容
String name="<A><ABC><B><B"
我想要的是从filterTags数组中删除值,但保留<ABC>
,因为它来自名称(String)
if (name.contains(filterTags[i])and ???)
我只需要一个简单的检查,如果包含在名称(String)中,将删除filterTags值,但保持原样
先谢谢你
答案 0 :(得分:1)
嗯,你可以用正则表达式来做到这一点:
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();
请注意,这仅适用于过滤器代码不包含任何正则表达式特殊字符的情况
答案 1 :(得分:0)
只需使用正则表达式
即可String name = "<A><ABC><c<B<s";
pattern = Pattern.compile(".*(<ABC>).*");
matcher = pattern.matcher(name);
matcher.matches();
System.out.println(matcher.group(1)); // prints <ABC>