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