我问我的代码是否是自定义过滤器的常用且最有效的方法。用户可以选择可以使用/不使用的字符。脏文本可能很长,所以我必须看到我的代码需要尽可能高效:
String dirtyText = "iamacleantext<>>";
String allowedCharacters = "abcdefhijk$<>/lmnoqrgstuvwxyz";
String result = dirtyText.replaceAll("[" + allowedCharacters + "]","");
if (result.isEmpty()) {
System.out.println("Ok, your text can be used");
} else {
System.out.println("Sorry the text contains not allowed characters");
}
非常感谢能够对此有更多了解的人
答案 0 :(得分:2)
有been many questions关注String.contains
与正则表达式。根据大多数线程,很明显正则表达式性能较差。另一种方法(对第一个非法角色采取纾困):
private static boolean check(String dirtyText) {
String allowedCharacters = "abcdefhijk$<>/lmnoqrgstuvwxyz";
for (int i=0; i < dirtyText.length(); i++) {
if (!allowedCharacters.contains(dirtyText.substring(i, i+1))) {
return false;
}
}
return true;
}