[英]Is there eny more efficient (and less tedious) way to do this?
对于家庭作业,我必须基于Character.isJavaIdentifierStart创建自己的方法。 它应该只考虑字符'a'到'z'(大写和小写),'$'和'_'才有效。 它返回一个布尔值。 我错过了一种更简单的方法吗?
public static boolean myIsJavaIdentifierStart(char ch) {
if (ch == '$' || ch == '_') {
return true;
}
else {
switch (ch) {
case 'a':return true;
case 'b':return true;
case 'c':return true;
case 'd':return true;
case 'e':return true;
case 'f':return true;
case 'g':return true;
case 'h':return true;
case 'i':return true;
case 'j':return true;
case 'k':return true;
case 'l':return true;
case 'm':return true;
case 'n':return true;
case 'o':return true;
case 'p':return true;
case 'q':return true;
case 'r':return true;
case 's':return true;
case 't':return true;
case 'u':return true;
case 'v':return true;
case 'w':return true;
case 'x':return true;
case 'y':return true;
case 'z':return true;
case 'A':return true;
case 'B':return true;
case 'C':return true;
case 'D':return true;
case 'E':return true;
case 'F':return true;
case 'G':return true;
case 'H':return true;
case 'I':return true;
case 'J':return true;
case 'K':return true;
case 'L':return true;
case 'M':return true;
case 'N':return true;
case 'O':return true;
case 'P':return true;
case 'Q':return true;
case 'R':return true;
case 'S':return true;
case 'T':return true;
case 'U':return true;
case 'V':return true;
case 'W':return true;
case 'X':return true;
case 'Y':return true;
case 'Z':return true;
default: return false;
}
}
}
还有很多其他方法可以做到这一点,但也许最简单的方法之一就是扩展您已经拥有的方法顶部的东西:
return ch == '$'
|| ch == '_'
|| (ch >= 'a' && ch <= 'z')
|| (ch >= 'A' && ch <= 'Z');
您需要注意几个问题,看看为什么会这样:
boolean
,因此可以直接使用任何布尔表达式,而不使用if
语句 A
.. Z
和a
.. z
代码点是连续的 ,使您能够使用一对>=
和<=
检查检查[A..Z]
或[a..z]
间隔的成员资格。 当然有更有效的方法。 1. Unicode和ASCII等标准中的字符“a”到“z”是连续的整数。 因此,您可以执行if(ch> 0'a'&& ch <='z'),而不是单独检查每个。 此外,您可以尝试使用:return(Character.isLetter(ch));
请参阅以下参考: - 所有Java字符函数的列表: http : //docs.oracle.com/javase/7/docs/api/java/lang/Character.html
if ((ch >= 'a' && ch <= 'z') || (ch >='A' && ch <= 'Z'))
return true;
或者,如果要将其转换为字符串/字符,可以使用toLower:
Character lower = Character.toLowerCase(ch);
if (ch >= 'a' && ch <= 'z')
return true;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.