我有一些字符希望被视为“非法”:
~
, #
, @
, *
, +
, %
, {
, }
, <
, >
, [
, ]
, |
, “
, ”
, \
, _
, ^
我想编写一个检查字符串并确定该字符串是否包含这些非法字符的方法(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...
}
}
有没有更优雅/高效的方法来完成这个任务?