最初Javaに書いて、あとからJavaScriptも書いた。
Java
public static String hullToHalfNumber(String s) { StringBuilder sb = new StringBuilder(s); for (int i = 0; i < sb.length(); i++) { int c = (int) sb.charAt(i); if (c >= 0xFF10 && c <= 0xFF19) { sb.setCharAt(i, (char) (c - 0xFEE0)); } } return sb.toString(); }
JavaScript
// 全角を半角へ変更 var string = "01234"; var halfString = string.replace(/[0-9]/g, function(s) { return String.fromCharCode(s.charCodeAt(0) - 0xFEE0); }); // 01234 console.log(halString);
どっちのコードにもある「0xFEE0」って何?
文字コードを16進数にし、この値をプラスすると「全角」になり、マイナスすると「半角」となる。面白いね!