我试图了解为什么下面的正则表达式失败。我正在尝试检索:两侧的值范围,但是我的代码始终无法访问elserange来自像这样的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/

10-10 13:47
查看更多