检查字符串是否遵循Java中的ISBN-13

Roc*_*ady 2 java for-loop mathematical-expressions

我试图检查一个字符串(重要的是它是一个字符串)即时阅读是否符合ISBN-13的规则 .我找到了一个公式

例如,ISBN-13校验位为978-0-306-40615-?

计算方法如下:

s = 9×1 + 7×3 + 8×1 + 0×3 + 3×1 + 0×3 + 6×1 + 4×3 + 0×1 + 6×3 + 1×1 + 5×3
  =   9 +  21 +   8 +   0 +   3 +   0 +   6 +  12 +   0 +  18 +   1 +  15
  = 93
93 / 10 = 9 remainder 3
10 –  3 = 7`
Run Code Online (Sandbox Code Playgroud)

我的问题是我不知道如何将一个数字乘以1而另一个数字乘以3?我猜一个for循环,但我不知道如何开始.

dwa*_*orf 5

你可以"简单地"使用正则表达式:

ISBN(-1(?:(0)|3))?:?\x20+(?(1)(?(2)(?:(?=.{13}$)\d{1,5}([ -])\d{1,7}\3\d{1,6}\3(?:\d|x)$)|(?:(?=.{17}$)97(?:8|9)([ -])\d{1,5}\4\d{1,7}\4\d{1,6}\4\d$))|(?(.{13}$)(?:\d{1,5}([ -])\d{1,7}\5\d{1,6}\5(?:\d|x)$)|(?:(?=.{17}$)97(?:8|9)([ -])\d{1,5}\6\d{1,7}\6\d{1,6}\6\d$)))