如何最好地检查字符串输入是否是用于编码的有效java变量?我敢肯定,我不是第一个愿意这样做的人。但也许我错过了正确的关键字来找到有用的东西。
最佳可能是RegEx,它会检查:
以字母
可以包含数字,字母
可以包含一些特殊字符,例如'_'(哪个?)
答案 0 :(得分:19)
public static boolean isValidJavaIdentifier(String s) {
if (s.isEmpty()) {
return false;
}
if (!Character.isJavaIdentifierStart(s.charAt(0))) {
return false;
}
for (int i = 1; i < s.length(); i++) {
if (!Character.isJavaIdentifierPart(s.charAt(i))) {
return false;
}
}
return true;
}
编辑:并且,如@Joey所示,您还应该过滤掉关键字和保留字。
答案 1 :(得分:12)
只需使用内置的isName
方法:
public static boolean isName(CharSequence name)
这将返回名称是否是最新源版本中语法上有效的限定名称。
请参阅isName()文档。