经常看见在敲打命令行的时候有“中划线 + 某个英文单词缩写”这样的flag.比如我现在有个应用(很简单),
当参数是-a的时候输出“aaaaaaa”
当参数是-b的时候输出“bbbbbbb”我就想知道这种中划线的参数传递,和普通的参数传递一样吗(传进来以后字符串匹配一下)
还是说java本身对这种类型的参数传递有什么特殊支持。不知道我有没有说清楚问题

解决方案 »

  1.   

    这个要自己写的,找了一个,很久以前写的。
    public class CommandAnalyzer {
    private Set<String> paremeters = new HashSet<String>();

    /**
     * Constructor
     * @param command
     */
    public CommandAnalyzer(String command){
    //find arguments
    if(command != null){
    int pStart = command.indexOf(Command.PARAM_SEPERATOR);
    String paremeter = command.substring(pStart);
    String[] p = paremeter.split("" + Command.COMMAND_SEPERATOR);
    for(String pair : p){
    paremeters.add(pair);
    }
    }
    }

    /**
     * Constructor
     * @param paramerters
     */
    public CommandAnalyzer(String[] paramerters){
    //find arguments
    if(paramerters != null){
    for(String pair : paramerters){
    if(pair.startsWith(Command.PARAM_SEPERATOR + "")){
    paremeters.add(pair);
    }
    }
    }
    }

    /**
     * Get parameter value like -uroot when invoke getParameter("u"), would return "root"
     * @param name
     * @return parameter value
     */
    public String getParameter(String name){
    for(String p : paremeters){
    String prefix = Command.PARAM_SEPERATOR + name;
    if(p.startsWith(prefix)){
    return p.substring(prefix.length());
    }
    }
    return null;
    }

    public String toString(){
    String command = "";
    for(String p : paremeters){
    command += p + " ";
    }
    return command;
    }
    }public interface Command {
    /**
     * Seperater of command and args
     */
    char COMMAND_SEPERATOR = ' ';
    /**
     * Prefix of param
     */
    char PARAM_SEPERATOR = '-';
    }
      

  2.   

    main方法中不是有参数数组么?用那个就行。
      

  3.   

    不就是main方法嘛....LZ不看书的....
    public static void main(String[] args) {
     for(String arg : args) {
      if(arg.equals("-a")
       System.out.println("aaaaa");
      else if(arg.equals("-b")
       System.out.println("bbbbb");
     }
    }
      

  4.   

    楼主可以到 Google 上搜索“Java CLI”可以搜到很多有用的东西。比如有:Apache Commons CLI: http://commons.apache.org/cli/
    args4j: https://args4j.dev.java.net/
      

  5.   

    我一直用main里的args[],把String给分割了。。