获得一系列结果的最佳方法是什么?

时间:2013-07-19 14:55:21

标签: java regex string parsing int

我有一个程序,可以从命令行运行-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,这就会失效,那么处理这个问题的最佳方法是什么呢?

1 个答案:

答案 0 :(得分: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));



    }