【JavaScript】英数字の全角半角変換
はじめに
英数字の半角全角変換です。ASCII文字の印字可能文字を一括で変換します。
半角文字
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
U+0020 | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / | |
U+0030 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? |
U+0040 | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
U+0050 | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ^ | _ |
U+0060 | ` | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o |
U+0070 | p | q | r | s | t | u | v | w | x | y | z | { | ` | ` | } | ~ |
※U+0020, U+007Fは、対象外
全角文字
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
U+FF00 | | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / |
U+FF10 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? |
U+FF20 | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
U+FF30 | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ^ | _ |
U+FF40 | ` | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o |
U+FF50 | p | q | r | s | t | u | v | w | x | y | z | { | | | } | ~ | ⦅ |
※U+FF00, U+FF5Fは、対象外
ソースコード
// 全角→半角変換
const toHalfWidth = str => {
return str.replace(/[\uFF01-\uFF5E]/g, ch => {
return String.fromCharCode(ch.charCodeAt(0) - 0xFEE0);
});
};
// 半角→全角変換
const toFullWidth = str => {
return str.replace(/[\u0021-\u007E]/g, ch => {
return String.fromCharCode(ch.charCodeAt(0) + 0xFEE0);
});
};
補足
次の文字は変換しません。
- スペース
- カタカナ
- ¥マーク
- 他