Это на самом деле, вероятно, не будет так сложно.Сохраните коллекцию объектов, представляющих символы, со свойствами, такими как TL, BR, T, BL (вверху слева, внизу справа, вверху, внизу слева), например:
a = RunKey.get("A");
public class RunKey{
public static Key get(Character char){
switch(char){
case A,a: return new A();
break;
// one for every letter
}
}
}
private class A extends RunKey implements IRunKey{
public IRunKey BR(){
return new Z();
}
public IRunKey TR(){
return new W();
}
public IRunKey T(){
return new Q();
}
public Direction getDirection(Character char){
tempRunKey = Runkey.get(char);
if (tempRunKey.T.toString == "char"){
return T;
}
}
}
Я начал сходить с умасоздание интерфейса «Направление», поэтому он немного сложнее, чем на первый взгляд, но у вас есть только так много сложностей и относительно простых объектов, поэтому, если вы будете держать его легким, он, вероятно, останется довольно быстрым.
Я чувствую, чтодинамический язык может быть лучшим для чего-то подобного ...
И да, как отмечают другие ответы, регулярное выражение не будет работать.