コード
ひらがなの濁点・半濁点文字をそれぞれ一文字ずつに分ける(変換する)処理コード。
また、文字と濁点・半濁点を一文字にする処理、その両方の処理もあり。
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
}
ツール
上記のコードを実装したツール。
入力
出力