半角英数字を全角英数字に変換
半角英数字のUnicode文字範囲
- 数字(0-9):0x30 - 0x39
- 英字(A-Z):0x41 - 0x5A
- 英字(a-z):0x61 - 0x7A
それぞれの文字コードに"0xFEE0"を足して全角文字にシフトします。
function toFullWidth(str) {
return str.replace(/[A-Za-z0-9]/g, (char) => {
return String.fromCharCode(char.charCodeAt(0) + 0xFEE0);
});
}
console.log("半角から全角:", toFullWidth("AbcDef123")); // "AbcDef123"
全角英数字を半角英数に変換
全角英数字のUnicode文字範囲
- 数字(0-9):0xFF10 - 0xFF19
- 英字(A-Z):0xFF21 - 0xFF3A
- 英字(a-z):0xFF41 - 0xFF5A
それぞれの文字コードから"0xFEE0"を引いて半角文字にシフトします。
function toHalfWidth(str) {
return str.replace(/[A-Za-z0-9]/g, (char) => {
return String.fromCharCode(char.charCodeAt(0) - 0xFEE0);
});
}
console.log("半角から全角:", toFullWidth("AbcDef123")); // "AbcDef123"
半角カタカナを全角カタカナに変換
マッピング配列を用意して該当文字列を1文字ずつ変換をかけていきます。
const halfToFullMap = {
'ア': 'ア', 'イ': 'イ', 'ウ': 'ウ', 'エ': 'エ', 'オ': 'オ',
'カ': 'カ', 'キ': 'キ', 'ク': 'ク', 'ケ': 'ケ', 'コ': 'コ',
'サ': 'サ', 'シ': 'シ', 'ス': 'ス', 'セ': 'セ', 'ソ': 'ソ',
'タ': 'タ', 'チ': 'チ', 'ツ': 'ツ', 'テ': 'テ', 'ト': 'ト',
'ナ': 'ナ', 'ニ': 'ニ', 'ヌ': 'ヌ', 'ネ': 'ネ', 'ノ': 'ノ',
'ハ': 'ハ', 'ヒ': 'ヒ', 'フ': 'フ', 'ヘ': 'ヘ', 'ホ': 'ホ',
'マ': 'マ', 'ミ': 'ミ', 'ム': 'ム', 'メ': 'メ', 'モ': 'モ',
'ヤ': 'ヤ', 'ユ': 'ユ', 'ヨ': 'ヨ',
'ラ': 'ラ', 'リ': 'リ', 'ル': 'ル', 'レ': 'レ', 'ロ': 'ロ',
'ワ': 'ワ', 'ヲ': 'ヲ', 'ン': 'ン',
'ァ': 'ァ', 'ィ': 'ィ', 'ゥ': 'ゥ', 'ェ': 'ェ', 'ォ': 'ォ',
'ッ': 'ッ', 'ャ': 'ャ', 'ュ': 'ュ', 'ョ': 'ョ',
'゙': '゛', '゚': '゜'
};
function toFullWidthKatakana(str) {
return str.split('').map(char => halfToFullMap[char] || char).join('');
}
console.log("半角から全角:", toFullWidthKatakana("アイウエオガギグゲゴ")); // "アイウエオカ゛キ゛ク゛ケ゛コ゛"
全角カタカナを半角カタカナに変換
const fullToHalfMap = {
'ア': 'ア', 'イ': 'イ', 'ウ': 'ウ', 'エ': 'エ', 'オ': 'オ',
'カ': 'カ', 'キ': 'キ', 'ク': 'ク', 'ケ': 'ケ', 'コ': 'コ',
'サ': 'サ', 'シ': 'シ', 'ス': 'ス', 'セ': 'セ', 'ソ': 'ソ',
'タ': 'タ', 'チ': 'チ', 'ツ': 'ツ', 'テ': 'テ', 'ト': 'ト',
'ナ': 'ナ', 'ニ': 'ニ', 'ヌ': 'ヌ', 'ネ': 'ネ', 'ノ': 'ノ',
'ハ': 'ハ', 'ヒ': 'ヒ', 'フ': 'フ', 'ヘ': 'ヘ', 'ホ': 'ホ',
'マ': 'マ', 'ミ': 'ミ', 'ム': 'ム', 'メ': 'メ', 'モ': 'モ',
'ヤ': 'ヤ', 'ユ': 'ユ', 'ヨ': 'ヨ',
'ラ': 'ラ', 'リ': 'リ', 'ル': 'ル', 'レ': 'レ', 'ロ': 'ロ',
'ワ': 'ワ', 'ヲ': 'ヲ', 'ン': 'ン',
'ァ': 'ァ', 'ィ': 'ィ', 'ゥ': 'ゥ', 'ェ': 'ェ', 'ォ': 'ォ',
'ッ': 'ッ', 'ャ': 'ャ', 'ュ': 'ュ', 'ョ': 'ョ',
'゛': '゙', '゜': '゚'
};
function toHalfWidthKatakana(str) {
return str.split('').map(char => fullToHalfMap[char] || char).join('');
}
console.log("全角から半角:", toHalfWidthKatakana("アイウエオカ゛キ゛ク゛ケ゛コ゛")); // "アイウエオガギグゲゴ"