🤖

Dart で ISBN13をISBN10に変換

2024/07/23に公開
String isbn10(String isbn13) {
  isbn13 = isbn13.replaceFirst('-', '');
  String isbn = isbn13.substring(3, 12);
  var sum = 0;
  for (int i = 0; i <= isbn13.length - 1; i++) {
    sum += int.parse(isbn13[i]) * (10 - i);
  }
  sum = 11 - (sum % 11);
  String sum_string;
  if (sum == 10) {
    sum_string = 'X';
  } else if (sum == 11) {
    sum_string = '0';
  } else {
    sum_string = sum.toString();
  }
  String ans = "${isbn}${sum_string}";
  return ans;
}

参考
https://ninoseki.hatenadiary.org/entry/20090525/1243236925

Discussion