如果我想解析该怎么办:
java MyProgram -r opt1 -S opt2 arg1 arg2 arg3 arg4 --test -A opt3
我想要的结果是:
regular Java args[] of size=4
org.apache.commons.cli.Options[] of size=3
org.apache.commons.cli.Options[] #2 of size=1
我更喜欢使用Apache Commons
CLI
,但是文档对我上面提到的情况有些不清楚。具体来说,文档没有告诉您如何处理我在下面指定的第3种类型的选项:
1. options with a "-" char 2. options with a "--" char 3. options without any marker, or "bare args"
我希望Apache Commons
CLI可以正常工作,但是如果这些args没有选项前缀,仍然可以将常规args传递给程序。也许可以,但是文档没有这么说,因此在我阅读它时…
您可以手动完成。
注意: 使用HashMap代替内部类可能更好。
/** convenient "-flag opt" combination */
private class Option {
String flag, opt;
public Option(String flag, String opt) { this.flag = flag; this.opt = opt; }
}
static public void main(String[] args) {
List<String> argsList = new ArrayList<String>();
List<Option> optsList = new ArrayList<Option>();
List<String> doubleOptsList = new ArrayList<String>();
for (int i = 0; i < args.length; i++) {
switch (args[i].charAt(0)) {
case '-':
if (args[i].length < 2)
throw new IllegalArgumentException("Not a valid argument: "+args[i]);
if (args[i].charAt(1) == '-') {
if (args[i].length < 3)
throw new IllegalArgumentException("Not a valid argument: "+args[i]);
// --opt
doubleOptsList.add(args[i].substring(2, args[i].length));
} else {
if (args.length-1 == i)
throw new IllegalArgumentException("Expected arg after: "+args[i]);
// -opt
optsList.add(new Option(args[i], args[i+1]));
i++;
}
break;
default:
// arg
argsList.add(args[i]);
break;
}
}
// etc
}
在写命令行程序(工具、server)时,对命令参数进行解析是常见的需求。各种语言一般都会提供解析命令行参数的方法或库,以方便程序员使用。如果命令行参数纯粹自己写代码解析,对于比较复杂的,还是挺费劲的。在 go 标准库中提供了一个包:flag,方便进行命令行解析。 注:区分几个概念 命令行参数(或参数):是指运行程序提供的参数 已定义命令行参数:是指程序中通过flag.Xxx等这种形式定义了的参数
问题内容: 在Java中解析命令行参数的好方法是什么? 问题答案: 例如,这是你用来解析2个字符串参数的方法: 从命令行使用:
建立一个解析器 import argparse parser = argparse.ArgumentParser( description='This is a PyMOTW sample program', ) 简单示例 # argparse_short.py import argparse parser = argparse.ArgumentParser(description='
我想从java程序中运行cmd命令,但它不起作用,这是命令:newman run collection1。4.json-eqa。邮递员的环境。json-r htmlextra目录是:C:\ 我在eclipse下编写了这个java脚本,但它不起作用: *公共静态空Test_WS_Cmd()抛出IOExctive,中断异常{
主要内容:flag 包概述,flag 参数类型,flag 包基本使用在编写命令行程序(工具、server)时,我们有时需要对命令参数进行解析,各种编程语言一般都会提供解析命令行参数的方法或库,以方便程序员使用。在Go语言中的 flag 包中,提供了命令行参数解析的功能。 下面我们就来看一下 flag 包可以做什么,它具有什么样的能力。 这里介绍几个概念: 命令行参数(或参数):是指运行程序时提供的参数; 已定义命令行参数:是指程序中通过 flag.Type 这种形