我有以下代码以交互方式解析System.in以获取箭头按键:
Scanner sc = new Scanner(System.in);
String str;
if ((str = sc.findWithinHorizon("\\G\\033\\[C", 0)) != null)
System.out.println("RIGHT ARROW");
else if ((str = sc.findWithinHorizon("\\G\\033\\[D", 0)) != null)
System.out.println("LEFT ARROW");
当我按下第一个右箭头一切顺利,但是当我先按左边的那个时,findWithinHorizon挂起等待更多输入,而它应该失败并返回null。
有了这种行为,我没有看到如何使用这种技术来编写一般的模式匹配解析器。
任何线索?
谢谢,Francesc
答案 0 :(得分:0)
findWithinHorizon
等到找到了什么。你可以尝试模式
\\G\\033\\[C|\\G\\033\\[D
然后查看字符串内容。
答案 1 :(得分:0)
问题是它不能扩展。也许更好的解决方案是:
\\G\\033\\[C|\\G
而不是
\\G\033\\[C
使模式始终匹配,然后比较长度。
还有其他选择吗?