命令行解析使用apache commons cli

时间:2014-04-24 06:41:44

标签: java apache-commons-cli

M尝试使用apache commons cli,我的用例是带有一些选项的可变数量的参数。

 -p str1 str2;

可以是

 -p str1 str2 str3 .. strn

另一个是

 -m str1
 -h

 cmdline.getOptionValues("p");

它只获取最后一个字符串。如何获取特定选项的所有值?

编辑:

if(cmdline.hasOption("p")){
 String[] argsList = cmdline.getOptionValues(p);
  String strLine = Arrays.toString(argsList);
  argsList = strLine.split(",");
 }

我做得对吗?字符串是否包含我想要的确切数据或者是否出现意外的空格?

2 个答案:

答案 0 :(得分:4)

使用hasArgs()并将值分隔符设置为逗号,因此选项变为

-p str1,str2,str3,...,strn

这是CLI中处理多值选项的方法

答案 1 :(得分:1)

我并不完全清楚你在做什么以及“它返回错误”,但这应该有效,我想你正在做的事情。

final CommandLineParser cmdLinePosixParser = new PosixParser();
Options options = new Options();
options.addOption(OptionBuilder.withArgName("p").hasArgs().create("p"));
CommandLine commandLine = cmdLinePosixParser.parse(options, args);
if (commandLine.hasOption("p")) {
    String[] pArgs = commandLine.getOptionValues("p");
    System.out.println(pArgs.length);
    for (String p : pArgs) {
        System.out.println(p);
    }
}