Пропустить неизвестные аргументы командной строки - PullRequest
1 голос
/ 09 сентября 2010

В моем текущем приложении параметры входящей командной строки анализируются на нескольких «уровнях».

На самом высоком уровне я хочу только проанализировать некоторые параметры, а остальные оставить на «более низких уровнях». однако все библиотеки, которые я пробовал до сих пор (Common Cli, args4j, JOpt, gnu.jargs), выдают исключение «неизвестная опция», когда я пытаюсь их кормить, ну, неизвестные опции.

Я действительно не хочу писать еще один класс синтаксического анализа командной строки. Есть ли библиотека / класс, который анализирует эти опции и пропускает неизвестные опции?

Спасибо

Ответы [ 2 ]

1 голос
/ 22 марта 2011

jopt позволяет указать значение по умолчанию.Не исключение брошено

parser.accepts("count").withOptionalArg().ofType(Integer.class).defaultsTo(-1);
0 голосов
/ 24 октября 2017

уверен, что есть лучшее решение.

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);
...