我想基于控制台制作一个简单的交互式 shell,我可以在其中编写诸如login
,help
等命令。
我首先想到了使用 Enums,但后来我不知道如何在没有大量 if-else 语句的情况下巧妙地实现它们,所以我决定使用数组方法并想出了这个:
public class Parser {
private static String[] opts = new String[] {"opt0", "opt1", "opt2", "opt3" ... }
public void parse(String text) {
for(int i = 0; i < opts.length; i++) {
if(text.matches(opts[i]) {
switch(i) {
case 0:
// Do something
case 1:
// Do something-something
case 2:
// Do something else
}
return;
}
}
}
}
但我最终发现这可能是做这种事情的最基本的方法,如果我想改变选项的顺序会出现问题。我怎样才能制作一个更简单的解析器?这样它会起作用,但它也会说问题。该程序的使用纯粹是教育性的,不用于任何严肃的事情。