spring引用参数有空格,无法正确解析

时间:2016-01-01 13:05:44

标签: spring-boot

Spring boot非web项目,主要目的是用作shell来发送电子邮件消息。 Uasge:

send-email-shell-0.0.1-SNAPSHOT.jar -to foo@bar.com -subject "hello world" -attach /tmp/pom.xml

但我发现其实的论点是

[-to, foo@bar.com, -subject, hello, world, -attach, /tmp/pom.xml]

并且因为我想将args转换为map,奇数索引是键,甚至索引是值,所以我先检查args长度,如果args.length%2!=0将抛出Exception。那么我怎样才能正确处理主题内容?

2 个答案:

答案 0 :(得分:1)

请参阅docs

参数用=

指定
$ java -jar myproject.jar --spring.config.name=myproject

所以试试

$ java -jar send-email-shell-0.0.1-SNAPSHOT.jar -to=foo@bar.com -subject="hello world"

答案 1 :(得分:0)

谢谢@SMA 以下是我建议的方式

    Map<String,String> map = new HashMap<>();
    String key = null;
    for (int i = 0; i < args.length; i++) {
        if(args[i].startsWith("-")){
            key = args[i].replaceFirst("-+", ""); // -from --> from
            map.put(key, null);
        }else{
            map.put(key, (map.get(key)==null?"":map.get(key)+" ")+args[i]);
        }
    }

参数是

[-to, foo@bar.com, -subject, hello, world]

地图是

{subject=hello world, to=foo@bar.com}