java - 有没有更有效(且不那么乏味)的方法来做到这一点?

标签 java

对于家庭作业,我必须基于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 ..Za ..z UNICODE 中的连续,使您能够检查 [A..Z] 中的成员资格或[a..z]间隔与一对 >=<=检查。

关于java - 有没有更有效(且不那么乏味)的方法来做到这一点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24746275/

相关文章:

java - 如何在 eclipse juno 中使用 post 请求调试动态 web 项目

java - Hibernate 空间函数不断抛出意外的 AST 节点

java - 子类构造函数中的默认值要传递给父类(super class)吗?

Java 对列表中的项目进行排名

java - 在 replace() 和 replaceFirst() 中使用 + 号

java - 设置ejb定时器任务的参数来执行后端进程

java - 是否有用于识别过时/不一致的 JavaDoc 注释的工具?

java - 我尝试使用 JDBC 在 MySQL 数据库中创建一个表

java - java.lang.NoSuchMethodError : com. sun.jna.Native.register(Ljava/lang/String;)V 的原因

java - Hibernate 集合不与任何 session 关联