我正在尝试编写一个方法,该方法将采用单个字符串,并且(如果可能)返回它对应的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。
任何想法如何进行正则表达式检查以及实际转换?提前谢谢!
答案 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);