1

単一の文字列を受け取り、(可能であれば)対応する仮想キーコードを返すメソッドを作成しようとしています。

例えば:

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");

したがって、 「何とか」には4つの文字があるため、パスMyKeyUtils.getKeyCode("blah")はスローします。また、 「@」は数字の0〜9でも文字のA〜ZでもないためIllegalArgumentException、渡すと同じ例外がスローされます。MyKeyUtils.getKeyCode("@")

正規表現チェックと実際の変換を行う方法について何かアイデアはありますか?前もって感謝します!

4

2 に答える 2

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

変換(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 
...
于 2012-10-16T16:04:24.600 に答える
0

またはと入力を一致させ^[0-9A-Za-z]$ます^[\\w&&[^_]]$

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

int code = key.charAt(0);
于 2012-10-16T15:59:02.340 に答える