正则表达式Java文本过滤器
对于一个项目,我需要开发een Java应用程序来检查多个部分上的字符串:
- 首先,检查单词是否包含指定列表中的单词
请注意:- 输入可能包含列表中的一个单词,但字符之间可以有空格或特殊字符以绕过过滤器。在这种情况下,过滤器需要将单词过滤到李>
- 这个词可以放在另一个词中。然后,如果指定了before和/或after过滤器,则需要过滤单词李>
- 第二个是过滤包含ip地址的文本
请注意:- 输入可能包含ip,其中使用特殊字符或空格绕过筛选器。在这种情况下,筛选器需要将ip地址筛选到李>
- 第三种方法是从文本中过滤网址
此外,请注意:- 输入可能包含使用特殊字符或空格绕过筛选器的网址。在这种情况下,筛选器需要将web地址筛选到李>
我测试了一些idea,检查空格和特殊字符,但是处理传入的文本需要花费大量的工作
我尝试过的一个例子:
public static boolean validateBericht(String msg) {
return validateTransformedBericht(msg);
}
private static boolean validateTransformedBericht(String bericht) {
if (bericht.length() != 0) {
for (String woord : ChatControlList.getChatControlList()
.getWoordenLijst()) {
for (int i = 0; i < (bericht.length() - (woord.length() - 1)); i++) {
if (i == 0 || inTekenLijst(bericht.charAt(i))) {
int index = 0;
for (int j = i; j < bericht.length(); j++) {
if (inTekenLijst(bericht.charAt(j))) {
} else if (bericht.charAt(j) == woord.charAt(index)) {
index++;
} else {
break;
}
if (index == woord.length()) {
if ((bericht.length() - 1) == j
|| inTekenLijst(bericht.charAt(index))) {
return true;
} else {
break;
}
}
}
}
}
}
}
return false;
}
private static boolean inTekenLijst(char teken) {
for (String tekenUitLijst : ChatControlList.getChatControlList()
.getSpecialeTekens()) {
if (tekenUitLijst.equalsIgnoreCase(String.valueOf(teken))
|| String.valueOf(teken).equalsIgnoreCase(" ")) {
return true;
}
}
return false;
}
有人知道如何用有效的解决方案来解决这个问题吗
伤害
# 1 楼答案
在这种情况下,您应该创建两种方法:
然后你可以在代码中随心所欲地使用它们
检查字符串是否与搜索的单词匹配的代码:
测试给定地址并判断其是否为IP地址的方法;网址或无效地址:
这是一个Working Ideone Test
# 2 楼答案
对于第一部分,你可以去掉所有的特殊字符和空格,例如
。。。然后搜索单词