1

我有一个可以从命令行运行的程序,它可以-R指定要返回的结果范围。-R接受一个形式的参数n:n

看起来好像n:n可能是 1-5 或 10000-500000,那么获取两边值的最佳方法是:什么?

在将我的 arg 以下传递-R给一个方法后,我开始执行以下操作:

private int[] parseRangeResults(String range) {
   int[] rangeResults = new int[2];

   if(!(range.contains(":"))) {
      throw new Exception("Invalid range syntax");
   }

   String[] numbers = range.split(":")
   rangeResults[0] = Integer.parseInt(numbers[0]);
   rangeResults[1] = Integer.parseInt(numbers[2]);

   return rangeResults;
}

但我认为如果有人输入特殊字符,这就会崩溃,或者1000:::::5000,那么处理这个问题的最佳方法是什么?

4

1 回答 1

3

检查输入的最佳方法是使用正则表达式,如果regex("\\d*-\\d*")匹配,那么您的输出是正确的。这是您的功能的代码

    String regex = "(\\d*):(\\d*)";
    Pattern checkInput = Pattern.compile(regex);

    Matcher matcherInput = checkInput.matcher(range);

    if(matcherInput.matches()){
        rangeResults[1] = Integer.parseInt(matcherInput.group(1));
        rangeResults[2] = Integer.parseInt(matcherInput.group(2));



    }
于 2013-07-19T15:08:03.030 回答