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(",");
}
我做得对吗?字符串是否包含我想要的确切数据或者是否出现意外的空格?
答案 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);
}
}