Java 获得一系列结果的最佳方法是什么?
我有一个程序,可以从命令行运行,使用Java 获得一系列结果的最佳方法是什么?,java,regex,string,parsing,int,Java,Regex,String,Parsing,Int,我有一个程序,可以从命令行运行,使用-R指定要返回的结果范围。-R采用一个参数,其形式为n:n 考虑到n:n可能是1-5或10000-500000,获取两侧值的最佳方法是什么: 将arg following-R传递给方法后,我开始执行以下操作: private int[] parseRangeResults(String range) { int[] rangeResults = new int[2]; if(!(range.contains(":"))) { thro
-R
指定要返回的结果范围。-R
采用一个参数,其形式为n:n
考虑到n:n
可能是1-5或10000-500000,获取两侧值的最佳方法是什么:
将arg following-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
,那么最好的处理方法是什么?检查输入的最好方法是使用正则表达式如果这个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));
}
如果唯一的问题是,如果有人提供垃圾输入,它将不起作用,我不确定这是一个错误problem@StephenTG我很慢,想详细说明一下吗?虽然现在我考虑了一下,根据允许的范围,负值可能会有问题,但我认为这最好地总结了我的原始观点:。稍微不同的是,你需要考虑负数吗?在这种情况下,你所拥有的对于任何有效的输入都应该可以很好地工作。你可能想做的就是加入一点错误陷阱,以防用户给你一些无效的东西。编辑:我的研究表明string.split会删除“-”,所以你应该分析数字[0]和数字[1]这就是我说的错误输入陷阱的意思。我缺乏regex的专业知识来真正想出这个magicOr我应该说regex的专业知识吗?这不管用。。。我假设这是因为我的函数正在传递一个字符串,并且我正在尝试对一个字符串执行正则表达式整数检查。因为您更改了输入,请尝试使用组,这样会更容易。必须使用的正则表达式是(\d*):(\d*),并获取组1和2。