概要
TypeScriptで実装する日本語の文字変換処理をメモする
1. ひらがなからカタカナに変換する
export const convertHiraganaToKatakana = (str: string) => {
// ぁ-ん、ゔ、ゕ、ゖ
return str.replace(/[\u3041-\u3096]/g, (s) => {
return String.fromCharCode(s.charCodeAt(0) + 0x60);
});
};
2. 半角カタカナを全角カタカナに変換する
// 半角カタカナのUnicode範囲 \uff61 ~ \uff9f を列挙
const CONVERT_MAP = {
ガ: 'ガ',
ギ: 'ギ',
グ: 'グ',
ゲ: 'ゲ',
ゴ: 'ゴ',
ザ: 'ザ',
ジ: 'ジ',
ズ: 'ズ',
ゼ: 'ゼ',
ゾ: 'ゾ',
ダ: 'ダ',
ヂ: 'ヂ',
ヅ: 'ヅ',
デ: 'デ',
ド: 'ド',
バ: 'バ',
ビ: 'ビ',
ブ: 'ブ',
ベ: 'ベ',
ボ: 'ボ',
パ: 'パ',
ピ: 'ピ',
プ: 'プ',
ペ: 'ペ',
ポ: 'ポ',
ヴ: 'ヴ',
ヷ: 'ヷ',
ヺ: 'ヺ',
ア: 'ア',
イ: 'イ',
ウ: 'ウ',
エ: 'エ',
オ: 'オ',
カ: 'カ',
キ: 'キ',
ク: 'ク',
ケ: 'ケ',
コ: 'コ',
サ: 'サ',
シ: 'シ',
ス: 'ス',
セ: 'セ',
ソ: 'ソ',
タ: 'タ',
チ: 'チ',
ツ: 'ツ',
テ: 'テ',
ト: 'ト',
ナ: 'ナ',
ニ: 'ニ',
ヌ: 'ヌ',
ネ: 'ネ',
ノ: 'ノ',
ハ: 'ハ',
ヒ: 'ヒ',
フ: 'フ',
ヘ: 'ヘ',
ホ: 'ホ',
マ: 'マ',
ミ: 'ミ',
ム: 'ム',
メ: 'メ',
モ: 'モ',
ヤ: 'ヤ',
ユ: 'ユ',
ヨ: 'ヨ',
ラ: 'ラ',
リ: 'リ',
ル: 'ル',
レ: 'レ',
ロ: 'ロ',
ワ: 'ワ',
ヲ: 'ヲ',
ン: 'ン',
ァ: 'ァ',
ィ: 'ィ',
ゥ: 'ゥ',
ェ: 'ェ',
ォ: 'ォ',
ッ: 'ッ',
ャ: 'ャ',
ュ: 'ュ',
ョ: 'ョ',
'。': '。',
'、': '、',
ー: 'ー',
'「': '「',
'」': '」',
'・': '・',
};
export const convertHalfKatakanaToFull = (str: string) => {
let result = str;
for (const [full, half] of Object.entries(CONVERT_MAP)) {
result = result.replace(new RegExp(full, 'g'), half);
}
return result;
};
3. 全角英数字を半角英数字に変換する
export const convertFullAlphanumericToHalf(str: string) {
return str.replace(/[A-Za-z0-9]/g, (s) => {
return String.fromCharCode(s.charCodeAt(0) - 65248);
});
}
まとめ
日本語の文字変換処理の実装例を紹介しましたが、それを参考して逆変更も簡単に実装できるので割愛する。