如何validation字符串是否是有效的java变量?

如何最好地检查字符串输入是否是用于编码的有效java变量? 我敢肯定,我不是第一个愿意这样做的人。 但也许我错过了正确的关键字来找到有用的东西。

最好的可能是RegEx,它检查:

  • 以一封信开头

  • 然后可以包含数字,字母

  • 可以包含一些特殊字符,比如’_’(哪个?)

  • 可能不包含空格分隔符

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所示,您还应该过滤掉关键字和保留字。

只需使用内置的isName方法:

 public static boolean isName(CharSequence name) 

这将返回名称是否是最新源版本中语法上有效的限定名称。

请参阅isName()文档。