对于家庭作业,我必须基于Character.isJavaIdentifierStart 创建自己的方法。 它应该仅认为字符“a”到“z”(小写和大写)、“$”和“_”有效。它返回一个 boolean 值。我是否缺少一种更简单的方法来执行此操作?
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
,因此可以直接使用任何 boolean 表达式,无需if
声明 - 字母的代码点
A
..Z
和a
..z
UNICODE 中的连续,使您能够检查[A..Z]
中的成员资格或[a..z]
间隔与一对>=
和<=
检查。
关于java - 有没有更有效(且不那么乏味)的方法来做到这一点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24746275/