我试图了解为什么下面的正则表达式失败。我正在尝试检索:
两侧的值范围,但是我的代码始终无法访问else
。 range
来自像这样的java -jar myprogram.jar -R 50:100
命令行arg。
是否因为我要向matches()
传递字符串并寻找整数而失败?
这是我的代码:
private int[] parseRangeResults(String range) {
int[] rangeResults = new int[2];
if(range.matches("\\d+:\\d+")) {
String[] numbers = range.split(":")
rangeResults[0] = Integer.parseInt(numbers[0]);
rangeResults[1] = Integer.parseInt(numbers[1]);
} else {
throw new Exception("Invalid Syntax.");
}
return rangeResults;
}
最佳答案
我会这样写
private static int[] parseRangeResults(String range) {
String[] numbers = range.split(":", -2)
return new int[] {Integer.parseInt(numbers[0]),Integer.parseInt(numbers[1])};
}
如果没有
:
,它将为您提供IndexOutOfBoundException: 1
如果有一个无效的数字,例如
1abc:234
,您将得到NumberFormatException: Unable to parse 1abc
关于java - 如何使用正则表达式解析字符串中的数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17756159/