使用扫描仪进行解析findWithinHorizo​​n问题

时间:2017-03-14 13:14:16

标签: java parsing java.util.scanner binary-operators

在我现在正在工作的项目中,我需要使用Scanner类解析转义序列(在Linux中使用Java)。例如,要包括键盘中的两个END键,我最初编写了以下代码:

if(sc.findWithinHorizon("(\\G\\e\\[4~)?",0).length() > 0 || sc.findWithinHorizon("(\\G\\eOF)?",0).length() > 0 ) {
  System.out.print("END"); //To see if it works

使用该代码,我无法获得任何输出(终端只是冻结)。看到之后,我将这两个条件分成两个不同的if:

 if(sc.findWithinHorizon("(\\G\\e\\[4~)?",0).length() > 0) 
   System.out.print("END"); 
 else if(sc.findWithinHorizon("(\\G\\eOF)?",0).length() > 0 )
   System.out.print("END");

然后它有效。有人知道为什么它不能与OR运算符一起使用吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

您想要捕获findwithinhorizo​​n解析为String的内容,然后进行比较。你在第一个if语句中做的是解析sc两次。一旦对某事做了比较,那么第二次对文本的不同部分进行不同的比较。

我怀疑这是你想要的行为。当你将水平线设置为0时,它会查看当前位置是什么,然后将位置增加1,所以你的第二个调用正在查看不同的索引。如果你真的到达了文件的末尾,我会相信这会导致一些奇怪的行为并解释它为什么会挂起。