在當前的應用程序中,傳入的命令行參數在幾個「級別」上被解析。跳過未知的命令行參數
在最高級別上,我只想解析一些選項,並將其餘部分留在「較低級別」。然而,到目前爲止,我嘗試過的所有庫(Common Cli,args4j,JOpt,gnu.jargs)都會在嘗試提供它們時引發「未知選項」異常,以及未知選項。
我真的不想寫一個又一個命令行解析類。有沒有一個庫/類可以解析這些選項並跳過未知選項?
謝謝
在當前的應用程序中,傳入的命令行參數在幾個「級別」上被解析。跳過未知的命令行參數
在最高級別上,我只想解析一些選項,並將其餘部分留在「較低級別」。然而,到目前爲止,我嘗試過的所有庫(Common Cli,args4j,JOpt,gnu.jargs)都會在嘗試提供它們時引發「未知選項」異常,以及未知選項。
我真的不想寫一個又一個命令行解析類。有沒有一個庫/類可以解析這些選項並跳過未知選項?
謝謝
jopt讓你指定一個默認值。不會引發異常
parser.accepts("count").withOptionalArg().ofType(Integer.class).defaultsTo(-1);
確信有更好的解決方案。
public static BiFunction<String[],CmdLineParser,String[]> stripUnusedArgs=(args,parser)->{
List<String> accepteds=parser.getOptions().stream().map(opt->opt.option.toString()).collect(Collectors.toList());
List<String> stripedArgs=new ArrayList<>();
for(int i=0; i< args.length;i++){
if(accepteds.contains(args[i])){
stripedArgs.add(args[i]);
stripedArgs.add(args[i+1]);
}
}
return stripedArgs.toArray(new String[0]);
};
而且使用它:
CmdLineParser parser = new CmdLineParser(CustomArgsObject);
stripUnusedArgs.apply(args,parser);
你可以張貼例如你怎麼努力去做呢? – 2010-09-09 13:51:26