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

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

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

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,这种情况就会消失,那么处理此问题的最佳方法是什么?

最佳答案

检查输入的最佳方法是使用正则表达式,如果此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));



    }

07-25 21:44