(人様の) 半角カナ→全角カタカナ変換

by ethertank

HTML

<p>from <a href="http://www.openspc2.org/reibun/javascript/business/003/index.html" title="半角カナから全角カナへ変換する(濁点等対応版)">半角カナから全角カナへ変換する(濁点等対応版)</a></p>

<p>全く思いつかなかったパターン。なるほど(・ω・´;)</p>

JavaScript

String.prototype.toZenkaku = function() {
    var txt = "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォャュョッ、。ー「」゙゚";
    var zen = "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォャュョッ、。ー「」";
    var str = "";

    zen += "     ガギグゲゴザジズゼゾダヂヅデド     バビブベボ                              ";
    zen += "                         パピプペポ                             ";

    for (var i = 0, len = this.length; i < len; ++i) {
        c = this.charAt(i);
        cnext = this.charAt(i + 1);
        n = txt.indexOf(c, 0);
        nnext = txt.indexOf(cnext, 0);
        if (n >= 0) {
            if (nnext == 60) {
                c = zen.charAt(n + 60);
                i++;
            } else if (nnext == 61) {
                c = zen.charAt(n + 120);
                i++;
            } else {
                c = zen.charAt(n);
            }
        }
        if ((n != 60) && (n != 61)) {
            str += c;
        }
    }
    return str;
}

document.body.appendChild(
  document.createElement("p").appendChild(
    document.createTextNode("ガラパゴス".toZenkaku())
  )
);