/**
* 检查是否为合法的标识符
* @author lzh
*/
public class JavaIdentifierTest {
/** Java源代码使用的是Unicode码(16位),所以支持汉字等。
* 标识符是以字母、下划线(_)或美元符($)开头,
* 由字母、数字、下划线(_)或美元符($)组成的字符串。
* 标识符区分大小写,长度没有限制。
* int 1name; //非法,以数字开头,会提示:Syntax error on token "1", invalid VariableDeclarator
* String 1223k; //Syntax error on token "1", delete this token
*/
/**
* @param candidate 传入一个待检测的字符串
* @return boolean 返回结果:true或false
*/
public static boolean isValidJavaIdentifier(String candidate){
// 1.判断是否为空及调用Character的isJavaIdentifierStart来检测第一个字符是否符合标识符的标准;
if( (candidate.length()==0) || (!Character.isJavaIdentifierStart(candidate.charAt(0)) ) ){
return false;
}
// 2.调用Character的isJavaIdentifierPart逐个判断除第一个字符外的其他字符是否符合标识符的标准;
String tail = candidate.substring(1);
for(int i=0;i<tail.length(); i++){
if(!Character.isJavaIdentifierPart(tail.charAt(i))){
return false;
}
}
// 3.上面的两个条件都符合,则返回true;
return true;
}
//程序的入口main方法
public static void main(String[] args) {
//将待检测的字符串放在一个字符数组中,
String[ ] candidates = { "", "123", "36C", "a1", "_pos", "index","null" };
// 逐个检测
for ( int i = 0; i < candidates.length; i++ )
System.out.println(
"检测是否为合法的标识符:isValidJavaIdentifier( \"" + candidates[ i ] + "\"\t) --> " +
isValidJavaIdentifier( candidates[ i ] ) );
}
}
/** 结果:
检测是否为合法的标识符:isValidJavaIdentifier( "" ) --> false
检测是否为合法的标识符:isValidJavaIdentifier( "123" ) --> false
检测是否为合法的标识符:isValidJavaIdentifier( "36C" ) --> false
检测是否为合法的标识符:isValidJavaIdentifier( "a1" ) --> true
检测是否为合法的标识符:isValidJavaIdentifier( "_pos" ) --> true
检测是否为合法的标识符:isValidJavaIdentifier( "index" ) --> true
检测是否为合法的标识符:isValidJavaIdentifier( "null" ) --> true
*/
Java-标识符
最新推荐文章于 2024-09-10 10:27:18 发布