Java:将字符串转换为KeyEvent虚拟键代码?

时间:2012-10-16 15:56:00

标签: java regex keyevent keycode

我正在尝试编写一个方法,该方法将采用单个字符串,并且(如果可能)返回它对应的virtual key code

例如:

private static int getKeyCode(final String key) {
    if(key.length != 1)
        throw new IllegalArgumentException("Only support single characters");

    // Also check to see if the 'key' is (1-9)(A-Z), otherwise exception

    // How to perform the conversion?
}

// Returns KeyEvent.VK_D
MyKeyUtils.getKeyCode("D");

因此,传递MyKeyUtils.getKeyCode("blah")会引发IllegalArgumentException,因为“blah”有4个字符。另外,传递MyKeyUtils.getKeyCode("@")会抛出相同的异常,因为“@”既不是数字0-9,也不是字符A-Z。

任何想法如何进行正则表达式检查以及实际转换?提前谢谢!

2 个答案:

答案 0 :(得分:1)

if (key.matches("[^1-9A-Z]"))
  throw new IllegalArgumentException("...");

Convertion可以使用(int) key.charAt(0)值完成,因为:

public static final int VK_0 48 
public static final int VK_1 49 
...
public static final int VK_9 57 
public static final int VK_A 65 
...

答案 1 :(得分:0)

将您的输入与^[0-9A-Za-z]$^[\\w&&[^_]]$

相匹配
if(!key.matches("[0-9A-Za-z]")) 
  throw new IllegalArgumentException("invalid input ...");

int code = key.charAt(0);