我有一个程序,可以使用-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));
}