Q863017854 2016-07-12 03:08 采纳率: 85.7%
浏览 1786
已采纳

java 如何把String类型中的字符都替换成KeyEvent.KEYCODE_

想要把一个String字符串中的每个字符都替换成KeyEvent.KEYCODE_

尝试了下面的方法 但是switch不能带string 切换成JDK1.7整个出错,Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tools > Fix Project Properties.

 switch (sStr)
        {
        case "a": return KeyEvent.KEYCODE_A;
        case "b": return KeyEvent.KEYCODE_B;
        case "c": return KeyEvent.KEYCODE_C;
        case "d": return KeyEvent.KEYCODE_D;
        case "e": return KeyEvent.KEYCODE_E;
        case "f": return KeyEvent.KEYCODE_F;
        case "g": return KeyEvent.KEYCODE_G;
        case "h": return KeyEvent.KEYCODE_H;
        case "i": return KeyEvent.KEYCODE_I;
        case "j": return KeyEvent.KEYCODE_J;
        case "k": return KeyEvent.KEYCODE_K;
        case "l": return KeyEvent.KEYCODE_L;
        case "m": return KeyEvent.KEYCODE_M;
        case "n": return KeyEvent.KEYCODE_N;

想用java的replaceall 结果只能 (string,string) KeyEvent.KEYCODE_属于int

求大神指教啊 急 在线等

  • 写回答

1条回答 默认 最新

  • little_how 2016-07-12 03:38
    关注

    可以用反射来获取:
    如:
    Field field = KeyEvent.class.getDeclaredField("KEYCODE_" + sStr.toUpperCase);
    return field.get(null);

    这个可以办到你的要求,如果想要优化这个反射的话,可以参考的我博客
    http://blog.csdn.net/w172087242/article/details/51648796

    如果有帮助,希望结帖

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用