【问题标题】:Parsing with Scanner findWithinHorizon issue使用 Scanner 解析 findWithinHorizo​​n 问题
【发布时间】:2017-08-04 20:22:59
【问题描述】:

在我现在正在工作的项目中,我需要使用 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 运算符吗?

提前致谢。

【问题讨论】:

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


    【解决方案1】:

    您需要捕获 findwithinhorizo​​n 解析为字符串的内容,然后进行比较。您在第一个 if 语句中所做的是将 sc 解析两次。一次对某事进行比较,然后第二次对文本的不同部分进行不同的比较。

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

    【讨论】:

      猜你喜欢
      • 2013-10-15
      • 1970-01-01
      • 2017-05-13
      • 1970-01-01
      • 2016-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-05
      相关资源
      最近更新 更多