const kanaMap = { ガ: 'ガ', ギ: 'ギ', グ: 'グ', ゲ: 'ゲ', ゴ: 'ゴ', ザ: 'ザ', ジ: 'ジ', ズ: 'ズ', ゼ: 'ゼ', ゾ: 'ゾ', ダ: 'ダ', ヂ: 'ヂ', ヅ: 'ヅ', デ: 'デ', ド: 'ド', バ: 'バ', ビ: 'ビ', ブ: 'ブ', ベ: 'ベ', ボ: 'ボ', パ: 'パ', ピ: 'ピ', プ: 'プ', ペ: 'ペ', ポ: 'ポ', ヴ: 'ヴ', ヷ: 'ヷ', ヺ: 'ヺ', ア: 'ア', イ: 'イ', ウ: 'ウ', エ: 'エ', オ: 'オ', カ: 'カ', キ: 'キ', ク: 'ク', ケ: 'ケ', コ: 'コ', サ: 'サ', シ: 'シ', ス: 'ス', セ: 'セ', ソ: 'ソ', タ: 'タ', チ: 'チ', ツ: 'ツ', テ: 'テ', ト: 'ト', ナ: 'ナ', ニ: 'ニ', ヌ: 'ヌ', ネ: 'ネ', ノ: 'ノ', ハ: 'ハ', ヒ: 'ヒ', フ: 'フ', ヘ: 'ヘ', ホ: 'ホ', マ: 'マ', ミ: 'ミ', ム: 'ム', メ: 'メ', モ: 'モ', ヤ: 'ヤ', ユ: 'ユ', ヨ: 'ヨ', ラ: 'ラ', リ: 'リ', ル: 'ル', レ: 'レ', ロ: 'ロ', ワ: 'ワ', ヲ: 'ヲ', ン: 'ン', ァ: 'ァ', ィ: 'ィ', ゥ: 'ゥ', ェ: 'ェ', ォ: 'ォ', ッ: 'ッ', ャ: 'ャ', ュ: 'ュ', ョ: 'ョ', '。': '。', '、': '、', ー: 'ー', '「': '「', '」': '」', '・': '・', } as const export function convertKanaHalfToFull(str: string) { let reg = new RegExp('(' + Object.keys(kanaMap).join('|') + ')', 'g') return str .replace(reg, s => { return kanaMap[s as keyof typeof kanaMap] }) .replace(/゙/g, '゛') .replace(/゚/g, '゜') }