【发布时间】:2013-01-16 02:55:02
【问题描述】:
我希望将以下字符视为“非法”:
~, #, @, *, +, %, {, }, <, @987653331@, @98654331@, @9867653331@ 、|、“、”、\、_、^
我想编写一个方法来检查字符串并确定 (true/false) 该字符串是否包含这些非法内容:
public boolean containsIllegals(String toExamine) {
return toExamine.matches("^.*[~#@*+%{}<>[]|\"\\_^].*$");
}
但是,简单的matches(...) 检查对此并不可行。我需要该方法来扫描字符串中的每个字符并确保它不是这些字符之一。当然,我可以做一些可怕的事情,比如:
public boolean containsIllegals(String toExamine) {
for(int i = 0; i < toExamine.length(); i++) {
char c = toExamine.charAt(i);
if(c == '~')
return true;
else if(c == '#')
return true;
// etc...
}
}
有没有更优雅/更有效的方法来实现这一点?
【问题讨论】:
-
为什么使用
matches不可行? -
因为那不酷!