java中具有特定格式变量名的命令行参数
我正在尝试以的格式为类获取CLIjava中具有特定格式变量名的命令行参数,java,command-line-interface,Java,Command Line Interface,我正在尝试以的格式为类获取CLI java演示——20岁——命名Amr——技术学院——课程CS 我如何做到这一点 我看到了其中一个解决方案,并尝试了一下 Map argsMap=newlinkedhashmap(); for(字符串arg:args){ 字符串[]部分=arg.split(“”); argsMap.put(第[0]部分、第[1]部分); } argsMap.entrySet().forEach(arg->{ System.out.println(arg.getKey().rep
java演示——20岁——命名Amr——技术学院——课程CS
我如何做到这一点
我看到了其中一个解决方案,并尝试了一下
Map argsMap=newlinkedhashmap();
for(字符串arg:args){
字符串[]部分=arg.split(“”);
argsMap.put(第[0]部分、第[1]部分);
}
argsMap.entrySet().forEach(arg->{
System.out.println(arg.getKey().replace(“-”,”)+“=”+arg.getValue());
});
但是上面代码的输入格式类似于javacdemo--age=20--name=Amar school=AOT course=CS
我希望我的i/p格式是这样的
java演示——20岁——命名Amr——技术学院——课程CS
因此,我将“=”替换为“”,并将数组设置为超出范围。
我在想regex会不会是个好办法
该代码始终需要4个输入。如果键和值对仅以空格分隔,则以下代码将起作用
public static void main(String[] args) {
Map<String, String> argMap = new LinkedHashMap<>();
for(int ind=0; ind<args.length; ind+=2) {
argMap.put(args[ind], args[ind+1]);
}
for(Map.Entry<String, String> entrySet: argMap.entrySet()) {
String property = entrySet.getKey().substring(2);
String value = entrySet.getValue();
System.out.println("key = " + property + ", value = " + value);
}
}
publicstaticvoidmain(字符串[]args){
Map argMap=新建LinkedHashMap();
对于(int ind=0;在您的第一个CLI示例中,您同时使用了两种语法:一种是按空格分隔键和值,另一种是使用=
分隔键和值。我怀疑这是一种拼写错误。或者您真的想用两种方式工作?我引用的代码也使用=
的输入格式,我希望使用空格,而不是java demo--20岁——命名为Amar
您将无法进行拆分(“=”)。每个参数都将是“args”中的一个标记。您是否考虑过使用库?@matt根据您的评论进行编辑。我的目的是检查属性中的用户键是否没有相应的值,这将导致ArrayIndexOutOfBoundsException。我将其留给Abal。这是有意义的,但您对循环和r检查。我想您希望第二个条件将'ind+1'与长度进行比较。
public static void main(String[] args) {
Map<String, String> argMap = new LinkedHashMap<>();
for(int ind=0; ind<args.length; ind+=2) {
argMap.put(args[ind], args[ind+1]);
}
for(Map.Entry<String, String> entrySet: argMap.entrySet()) {
String property = entrySet.getKey().substring(2);
String value = entrySet.getValue();
System.out.println("key = " + property + ", value = " + value);
}
}