AOK's JavaScript Library
IE6.0 (Win2000) で動作確認しています。
Last Update: May.18,2003

半角カナを全角カナに置換する(濁音・半濁音対応)
/**********************************************************************
 *
 *  半角カナを全角カナに置換(濁音・半濁音対応)
 *
 *  Copyright (c) 2003 AOK <soft@aokura.com>
 *
 **********************************************************************/

var zen_table = new Array(
    "。", "「", "」", "、", "・", "ヲ", "ァ", "ィ", "ゥ", "ェ",
    "ォ", "ャ", "ュ", "ョ", "ッ", "ー", "ア", "イ", "ウ", "エ",
    "オ", "カ", "キ", "ク", "ケ", "コ", "サ", "シ", "ス", "セ",
    "ソ", "タ", "チ", "ツ", "テ", "ト", "ナ", "ニ", "ヌ", "ネ",
    "ノ", "ハ", "ヒ", "フ", "ヘ", "ホ", "マ", "ミ", "ム", "メ",
    "モ", "ヤ", "ユ", "ヨ", "ラ", "リ", "ル", "レ", "ロ", "ワ",
    "ン", "゛", "゜"
);

function iskana(c)   { return (c >= 65377 && c <= 65439); }
function is_ka_to(c) { return (c >= 65398 && c <= 65412); }
function is_ha_ho(c) { return (c >= 65418 && c <= 65422); }

function h2z_kana(src) {
    var i, code, next;
    var str = new String;
    var len = src.length;
    for (i = 0; i < len; i++) {
        var c = src.charCodeAt(i);
        if (iskana(c)) {
            code = zen_table[c - 65377];
            if (i < len - 1) {
                next = src.charCodeAt(i+1);
                if (next == 65438 && c == 65395) {
                    code = "ヴ";
                    i++;
                } else if (next == 65438 && (is_ka_to(c) || is_ha_ho(c))) {
                    code = String.fromCharCode(code.charCodeAt(0)+1);
                    i++;
                } else if (next == 65439 && is_ha_ho(c)) {
                    code = String.fromCharCode(code.charCodeAt(0)+2);
                    i++;
                }
            }
            str += code;
        } else {
            str += src.charAt(i);
        } 
   }
   return str;
}

戻る Copyright (c) 2003 AOK. All Rights Reserved.