IT the Best

HTML/CSS/JSに関する情報やはてなブログのカスタマイズに関する情報を掲載しています。

濁点・半濁点文字を一文字ずつに変換する「自動変換ツール」 - 【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
}

 

 

ツール

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

 

入力
出力