findWithinHorizo​​n在失败时继续阅读

时间:2010-11-20 23:10:46

标签: java parsing

我有以下代码以交互方式解析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");

当我按下第一个右箭头一切顺利,但是当我先按左边的那个时,findWithinHorizo​​n挂起等待更多输入,而它应该失败并返回null。

有了这种行为,我没有看到如何使用这种技术来编写一般的模式匹配解析器。

任何线索?

谢谢,Francesc

2 个答案:

答案 0 :(得分:0)

findWithinHorizon等到找到了什么。你可以尝试模式

\\G\\033\\[C|\\G\\033\\[D

然后查看字符串内容。

答案 1 :(得分:0)

问题是它不能扩展。也许更好的解决方案是:

\\G\\033\\[C|\\G

而不是

\\G\033\\[C

使模式始终匹配,然后比较长度。

还有其他选择吗?