IT the Best

はてなブログのカスタマイズ情報を中心に、WEBデザインからJavaScriptまでWEB系の開発情報を発信します。便利ツールや暇つぶしのゲームなど開発物も公開します。

濁点・半濁点文字を一文字ずつに変換する【濁点・半濁点自動変換ツール】 - 【JavaScript】

コード

ひらがなの濁点・半濁点文字をそれぞれ一文字ずつに分ける(変換する)処理コード。
また、文字と濁点・半濁点を一文字にする処理、その両方の処理もあり。

 

let tagstr1 = {
    "が": "か゛", "ぎ": "き゛", "ぐ": "く゛", "げ": "け゛", "ご": "こ゛",
    "ざ": "さ゛", "じ": "し゛", "ず": "す゛", "ぜ": "せ゛", "ぞ": "そ゛",
    "だ": "た゛", "ぢ": "ち゛", "づ": "つ゛", "で": "て゛", "ど": "と゛",
    "ば": "は゛", "び": "ひ゛", "ぶ": "ふ゛", "べ": "へ゛", "ぼ": "ほ゛",
    "ぱ": "は゜", "ぴ": "ひ゜", "ぷ": "ふ゜", "ぺ": "へ゜", "ぽ": "ほ゜",
};
var tagstr2 = {}; Object.keys(tagstr1).map(function (v, index, array) { return tagstr2[tagstr1[v]] = v }); // keyとvalueを逆にする
let s1 = "が|ぎ|ぐ|げ|ご|ざ|じ|ず|ぜ|ぞ|だ|ぢ|づ|で|ど|ば|び|ぶ|べ|ぼ|ぱ|ぴ|ぷ|ぺ|ぽ";
let s2 = "か゛|き゛|く゛|け゛|こ゛|さ゛|し゛|す゛|せ゛|そ゛|た゛|ち゛|つ゛|て゛|と゛|は゛|ひ゛|ふ゛|へ゛|ほ゛|は゜|ひ゜|ふ゜|へ゜|ほ゜";

function convert(str, options) {
    function replacer1(match, index, input) { // 「が」 → 「か゛」
        return tagstr1[match]
    }
    function replacer2(match, index, input) { // 「か゛」 → 「が」
        return tagstr2[match]
    }
    function replacer3(match, index, input) { // 「が」 → 「か゛」 , 「さ゛」 → 「ざ」
        return tagstr1[match] || tagstr2[match]
    }
    var reg, replacer;
    if (!options || options == "1") {
        reg = new RegExp(s1, "g"); replacer = replacer1;
    } else if (options == "2") {
        reg = new RegExp(s2, "g"); replacer = replacer2;
    } else if (options == "3") {
        reg = new RegExp(s1 + "|" + s2, "g"); replacer = replacer3;
    }
    str = str.replace(reg, replacer);
    return str
}

 

 

ツール

上記のコードを実装したツール。

 

入力
出力