在我现在正在工作的项目中,我需要使用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运算符一起使用吗?
提前致谢。
答案 0 :(得分:0)
您想要捕获findwithinhorizon解析为String的内容,然后进行比较。你在第一个if语句中做的是解析sc两次。一旦对某事做了比较,那么第二次对文本的不同部分进行不同的比较。
我怀疑这是你想要的行为。当你将水平线设置为0时,它会查看当前位置是什么,然后将位置增加1,所以你的第二个调用正在查看不同的索引。如果你真的到达了文件的末尾,我会相信这会导致一些奇怪的行为并解释它为什么会挂起。