有没有办法从Apache commons-cli选项值中自动删除前导空格?

时间:2017-07-05 08:44:19

标签: java apache-commons-cli

考虑以下示例:

import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.DefaultParser;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;

public class ApacheCommonsCliWhitespaceTest {

  public static void main(String[] args) throws ParseException {
    Options options = new Options();
    Option option = new Option("t", "test", true, "test description");
    options.addOption(option);

    CommandLineParser parser = new DefaultParser();

    String[] parameters = new String[1];

    parameters[0] = "-t ping";
    CommandLine result = parser.parse(options, parameters);
    System.out.println("*" + result.getOptionValue("t") + "*");

    parameters[0] = "-test ping";
    result = parser.parse(options, parameters);
    System.out.println("*" + result.getOptionValue("t") + "*");
  }
}

结果将是

* ping*
* ping*

真的无法自动删除前导空格吗?我原以为这是一个常见的用例。

2 个答案:

答案 0 :(得分:1)

尝试

result.getOptionValue("t").trim()

答案 1 :(得分:1)

在您的情况下不确定是否可以调整此项,但似乎Commons CLI需要格式为-arg=value,因此以下结果为*ping*

    parameters[0] = "-test=ping";
    result = parser.parse(options, parameters);
    System.out.println("*" + result.getOptionValue("t") + "*");

另请参阅Usage guide(虽然样本不一致,但有时会使用" - test",这对我的版本1.4不起作用。)