在当前的应用程序中,传入的命令行参数在几个“级别”上被解析。跳过未知的命令行参数
在最高级别上,我只想解析一些选项,并将其余部分留在“较低级别”。然而,到目前为止,我尝试过的所有库(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