JavaScriptで濁音・半濁音を清音と濁点・半濁点に分解する
全銀フォーマットでは濁点・半濁点も1文字とカウントするため分離する必要がある
他にもいい方法があるかもしれないが、手っ取り早く分離しておく
function divideCharacter(rawTxt) { const arrReplaceData = [ ['ガ', 'カ゛'], ['ギ', 'キ゛'], ['グ', 'ク゛'], ['ゲ', 'ケ゛'], ['ゴ', 'コ゛'], ['ザ', 'サ゛'], ['ジ', 'シ゛'], ['ズ', 'ス゛'], ['ゼ', 'セ゛'], ['ゾ', 'ソ゛'], ['ダ', 'タ゛'], ['ヂ', 'チ゛'], ['ヅ', 'ツ゛'], ['デ', 'テ゛'], ['ド', 'ト゛'], ['バ', 'ハ゛'], ['ビ', 'ヒ゛'], ['ブ', 'フ゛'], ['ベ', 'ヘ゛'], ['ボ', 'ホ゛'], ['パ', 'ハ゜'], ['ピ', 'ヒ゜'], ['プ', 'フ゜'], ['ペ', 'ヘ゜'], ['ポ', 'ホ゜'] ]; if (rawTxt.length > 0) { for (let i = 0; i < arrReplaceData.length; i++) { let replaceData = arrReplaceData[i]; rawTxt = rawTxt.replace(new RegExp(replaceData[0], 'g'), function() { return replaceData[1]; }); } } //return rawTxt; console.log(rawTxt); } // 動作結果 divideCharacter('ガギグゲゴ'); // カ゛キ゛ク゛ケ゛コ゛ divideCharacter('ザジズゼゾ'); // サ゛シ゛ス゛セ゛ソ゛ divideCharacter('ダヂヅデド'); // タ゛チ゛ツ゛テ゛ト゛ divideCharacter('バビブベボ'); // ハ゛ヒ゛フ゛ヘ゛ホ゛ divideCharacter('アイウエオ'); // アイウエオ divideCharacter('パピプペポ'); // ハ゜ヒ゜フ゜ヘ゜ホ゜