对于家庭作业,我必须基于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;
}
}
}
答案 0 :(得分:11)
还有很多其他方法可以做到这一点,但也许最简单的方法之一就是扩展你已经掌握在方法顶部的东西:
return ch == '$'
|| ch == '_'
|| (ch >= 'a' && ch <= 'z')
|| (ch >= 'A' && ch <= 'Z');
你需要注意几点,看看为什么会这样:
boolean
,因此可以直接使用任何布尔表达式,而不使用if
语句A
.. Z
和a
.. z
连续,可让您检查会员资格以[A..Z]
或[a..z]
间隔进行一对>=
和<=
次检查。答案 1 :(得分:2)
当然有更有效的方法。 1.字符&#39; a&#39;到&#39; z&#39;在诸如Unicode和ASCII之类的标准中是连续的整数。因此,您可以执行if(ch&gt; 0&#39;&amp;&amp; ch&lt; =&#39; z&#39;),而不是单独检查每个。 此外,您可以尝试使用:return(Character.isLetter(ch));
请参阅以下参考资料: - 所有java字符函数的列表: http://docs.oracle.com/javase/7/docs/api/java/lang/Character.html
答案 2 :(得分:1)
if ((ch >= 'a' && ch <= 'z') || (ch >='A' && ch <= 'Z'))
return true;
或者如果要将其转换为字符串/字符,可以使用toLower:
Character lower = Character.toLowerCase(ch);
if (ch >= 'a' && ch <= 'z')
return true;