1

-R返される結果の範囲を指定するコマンド ラインから実行できるプログラムがあります。は、 の形式の-R引数を 1 つ取りますn:n

1 ~ 5 または 10000 ~ 500000n:nの可能性があるように見えますが、 の両側の値を取得する最良の方法は何:ですか?

メソッドに続く引数を渡した後、次-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、これを処理する最良の方法は何ですか?

4

1 に答える 1

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));



    }
于 2013-07-19T15:08:03.030 に答える