[converter] ISBN-10 <--> ISBN-13 (JavaScript)

観測気球

収集物の記録書庫 a data archive of collection -- collectible toys

[要旨] すでに世の中にはいっぱいありそうだけど、ISBN-10 と ISBN-13 の双方向変換処理を JavaScript で書いてみました。参考にしたい人はどうぞ。
[キーワード] ISBN,コード変換,ISBN10,ISBN13

« おすすめ度:在庫あり(BlogPet) | トップページ | 今週のお買い物 (2007.01.14~01.20) »

2007.01.20

[converter] ISBN-10 <--> ISBN-13 (JavaScript)

[観] [converter] ISBN-10 -> ISBN-13 / ISBN-13 -> ISBN-10」の JavaScript 版です。「右クリックで ISBN → オンライン書店リンク集生成」を ISBN-13 対応するのに必要ということで、JavaScript 版の変換処理を書いてみました。

/* convISBN.js : converter ISBN10 <-> ISBN13                 */
/*   Copyright (c) 2007 by H.Tsujimura  <tsupo@na.rim.or.jp> */
/*   Distributed by LGPL.                                    */
/*      this script written by H.Tsujimura  20 Jan 2007      */

function convISBN13toISBN10(str) {
    var s;
    var c;
    var checkDigit = 0;
    var result = "";

    s = str.substring(3,str.length);
    for ( i = 10; i > 1; i-- ) {
        c = s.charAt(10 - i);
        checkDigit += (c - 0) * i;
        result += c;
    }
    checkDigit = (11 - (checkDigit % 11)) % 11;
    result += checkDigit == 10 ? 'X' : (checkDigit + "");

    return ( result );
}

function convISBN10toISBN13(str) {
    var c;
    var checkDigit = 0;
    var result = "";

    c = '9';
    result += c;
    checkDigit += (c - 0) * 1;

    c = '7';
    result += c;
    checkDigit += (c - 0) * 3;

    c = '8';
    result += c;
    checkDigit += (c - 0) * 1;

    for ( i = 0; i < 9; i++ ) {  // >
        c = str.charAt(i);
        if ( i % 2 == 0 )
            checkDigit += (c - 0) * 3;
        else
            checkDigit += (c - 0) * 1;
        result += c;
    }
    checkDigit = (10 - (checkDigit % 10)) % 10;
    result += (checkDigit + "");

    return ( result );
}

以下、動作試験用の html です。使用例を兼ねています。以下の html は、上記の JavaScript を convISBN.js というファイル名で保存して使うことを前提にして書いています。

<html>
<head>
<title>ISBN10 <-> ISBN13</title>
<meta http-equiv="Content-Script-Type" content="text/javascript">

<script type="text/javascript" src="convISBN.js"></script>
<script type="text/javascript">
function preEdit(str)
{
    var len = str.length;
    var c;
    var s;

    if ( (str.substring(0,4) == 'ISBN') || (str.substring(0,4) == 'isbn') ) {
        str = str.substring(4, len);
        len = str.length;
    }

    s = "";
    for ( i = 0; i < len; i++ ) {  // >
        c = str.charAt(i);
        if ( (c == '-') || (c == ' ') )
            continue;
        s += c;
    }
    str = s;

    return ( str );
}
</script>
</head>

<body>
<p>this is a test page.</p>
<p>
ISBN-10: 4-8443-2364-4 -> ISBN-13: 
<script type="text/javascript">
document.write(convISBN10toISBN13(preEdit("4-8443-2364-4")));
</script>
<br>
ISBN-13: 978-4-8124-2952-5 -> ISBN-10: 
<script type="text/javascript">
document.write(convISBN13toISBN10(preEdit("978-4-8124-2952-5")))
</script>
</p>

</body>
</html>

投稿者: tsupo 2007.01.20 午後 10:20 | 固定リンク | このエントリーをはてなブックマークに追加 | このエントリを del.icio.us に登録 このエントリの del.icio.us での登録状況 | このエントリを Buzzurl に追加このエントリの Buzzurl での登録状況 | このエントリをlivedoorクリップに登録 このエントリのlivedoorクリップでの登録状況 このエントリをlivedoorクリップに登録している人の数 | 酢鶏巡回中

楽天市場


プログラミング」カテゴリ内の最近の記事

品揃え豊富で安い!NTT-X Store


アマゾンわくわく探検隊

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/6737/13590953

この記事へのトラックバック一覧です: [converter] ISBN-10 <--> ISBN-13 (JavaScript):

» jQueryで本の表紙画像を表示してみる from HrsTのブログ「継続は力なり」
動くものが、とりあえずできた。何をやっているかというと、tdISBN||*****tdと書かれたHTML文をtdimg/tdに置き換える処理をやってます。で、*****の部分は書籍ISBN番号の10桁または13桁を書く。そうすると、画像を用意しなくても、楽天Web Serviceから表紙画像を取得できるようになる。じゃぁ、スクリプト部分ね。ちなみにISBNの桁変換は、観測気球さんのHPを参考にしています。&... 続きを読む

受信: 2012.02.28 午前 12:10

コメント

コメントを書く




※イタズラ防止のため、メールアドレスを入力しないと投稿できません。

次からのコメント入力の手間を省くために、名前やメールアドレスをcookieに記憶しますか?


URL を入力すると、その URL にリンクがはられます。
なお、メールアドレスは公開されません。ご安心ください。


ワード

ニッセン

fujisan.co.jp

楽天市場