Args4j 列表参数包含 space 未处理
Args4j list arguments that contain space not handled
我正在处理一个奇怪的 args4j 错误。我正在处理列表命令行参数
aaa.jar -list special_date=2015-05-05 "special_name=bob the builder"
处理的
。当我检索列表的参数时,我得到的是
[special_date=2015-05-05, special_name=bob, the, builder]
Java 文档说这应该有效
java -jar aaa.jar -s banan hruska jablko
java -jar aaa.jar -s banan "hruska jablko"
java -jar aaa.jar -s "banan hruska jablko"
java -jar aaa.jar -s banan hruska jablko -l 4 -r
java -jar aaa.jar -t 222 -s banan hruska jablko -r
处理带引号的单个参数时没有错误。
aaa.jar -a "bob the builder"
工作得很好
谢谢
implementation of StringArrayOptionHandler
相当简单,您可以根据自己的目的轻松调整它。这样的事情应该有效:
public class WellBehavedStringArrayOptionHandler extends OptionHandler<String> {
public WellBehavedStringArrayOptionHandler(
CmdLineParser parser, OptionDef option, Setter<String> setter) {
super(parser, option, setter);
}
@Override
public String getDefaultMetaVariable() {
return Messages.DEFAULT_META_STRING_ARRAY_OPTION_HANDLER.format();
}
@Override
public int parseArguments(Parameters params) throws CmdLineException {
int counter;
for (counter = 0; counter < params.size(); counter++) {
String param = params.getParameter(counter);
if(param.startsWith("-")) {
break;
}
setter.addValue(param);
}
return counter;
}
}
最简单的答案是使用默认的 args4j 内置 StringArrayOptionHandler:
import org.kohsuke.args4j.spi.StringArrayOptionHandler;
/.../
@Option (name = "-o", aliases = {"--amoreclarifyingoptionname"},
handler=StringArrayOptionHandler.class,
usage = "How to use it")
private String[] option;
然后加入选项:
String getOption() {
StringBuilder cmd = new StringBuilder();
for (int i = 0; i < option.length; i++) {
cmd.append(option[i]);
cmd.append(" ");
}
return cmd.toString().trim();
}
我正在处理一个奇怪的 args4j 错误。我正在处理列表命令行参数
aaa.jar -list special_date=2015-05-05 "special_name=bob the builder"
处理的
。当我检索列表的参数时,我得到的是
[special_date=2015-05-05, special_name=bob, the, builder]
Java 文档说这应该有效
java -jar aaa.jar -s banan hruska jablko
java -jar aaa.jar -s banan "hruska jablko"
java -jar aaa.jar -s "banan hruska jablko"
java -jar aaa.jar -s banan hruska jablko -l 4 -r
java -jar aaa.jar -t 222 -s banan hruska jablko -r
处理带引号的单个参数时没有错误。
aaa.jar -a "bob the builder"
工作得很好
谢谢
implementation of StringArrayOptionHandler
相当简单,您可以根据自己的目的轻松调整它。这样的事情应该有效:
public class WellBehavedStringArrayOptionHandler extends OptionHandler<String> {
public WellBehavedStringArrayOptionHandler(
CmdLineParser parser, OptionDef option, Setter<String> setter) {
super(parser, option, setter);
}
@Override
public String getDefaultMetaVariable() {
return Messages.DEFAULT_META_STRING_ARRAY_OPTION_HANDLER.format();
}
@Override
public int parseArguments(Parameters params) throws CmdLineException {
int counter;
for (counter = 0; counter < params.size(); counter++) {
String param = params.getParameter(counter);
if(param.startsWith("-")) {
break;
}
setter.addValue(param);
}
return counter;
}
}
最简单的答案是使用默认的 args4j 内置 StringArrayOptionHandler:
import org.kohsuke.args4j.spi.StringArrayOptionHandler;
/.../
@Option (name = "-o", aliases = {"--amoreclarifyingoptionname"},
handler=StringArrayOptionHandler.class,
usage = "How to use it")
private String[] option;
然后加入选项:
String getOption() {
StringBuilder cmd = new StringBuilder();
for (int i = 0; i < option.length; i++) {
cmd.append(option[i]);
cmd.append(" ");
}
return cmd.toString().trim();
}