0

数字の桁数が他の数字と等しいかどうかを確認する必要があります。私が思いついた最良の方法はこれでした:

require(Number.toString  == """\d{8}""", throw new InvalidDateFormatException("Wrong format for string parameter"))

必要な桁数は 8 です。より良い方法はありますか?

4

5 に答える 5

9

1 つの選択肢:

require(Number.toString.length == 8, throw new InvalidDateFormatException("Wrong format for string parameter"))
于 2013-10-25T13:01:17.430 に答える
1

別の (学術的な) アプローチは、桁数を数えることです。

def digits(num: Int) = {
  @scala.annotation.tailrec
  def run(num: Int, digits: Int): Int =
    if(num > 0) run(num / 10, digits + 1)
    else        digits

  run(math.abs(num), 0)
}

たとえば、暗黙的な変換を使用して、digits既存の数値型にメソッドを追加できます。

これは行き過ぎであり、時期尚早の最適化である可能性が高いことは容易に認めます。

于 2013-10-25T15:37:11.950 に答える
0

別の選択肢は

require(Number > 9999999 && Number < 100000000,throw new InvalidDateFormatException("Wrong format for string parameter"))
于 2013-10-25T13:22:17.147 に答える