半角と全角
よくありがちなユーティリティ。
/** * 日本語ユーティリティ */ public class JapaneseUtility { /** 半角の0x20〜0x7Eの文字 */ public static final String HANKAKU = " !\"#$%&'()*+,-./"+ "0123456789:;<=>?"+ "@ABCDEFGHIJKLMNO"+ "PQRSTUVWXYZ[\\]^_"+ "`abcdefghijklmno"+ "pqrstuvwxyz{|}~"; /** 半角の0x20〜0x7Eに相当する全角文字 */ public static final String ZENKAKU = " !”#$%&’()*+,−./"+ "0123456789:;<=>?"+ "@ABCDEFGHIJKLMNO"+ "PQRSTUVWXYZ[¥]^_"+ "`abcdefghijklmno"+ "pqrstuvwxyz{|} ̄"; /** * 全角文字を半角文字に変換します。0x20〜0x7Eまでです。 * それ以外の文字はそのまま返します。 */ public static char convertZenToHan(char c) { int index = ZENKAKU.indexOf(c); if (index == -1) return c; return HANKAKU.charAt(index); } /** * 全角文字列を半角文字列に変換します。0x20〜0x7Eまでです。 * それ以外の文字はそのまま返します。 */ public static String convertZenToHan(String s) { assert s != null; StringBuffer sb = new StringBuffer(s.length()); for (int i=0; i<s.length(); i++) { sb.append(convertZenToHan(s.charAt(i))); } return sb.toString(); } /** * 半角文字を全角文字に変換します。0x20〜0x7Eまでです。 * それ以外の文字はそのまま返します。 */ public static char convertHanToZen(char c) { int index = HANKAKU.indexOf(c); if (index == -1) return c; return ZENKAKU.charAt(index); } /** * 半角文字列を全角文字列に変換します。0x20〜0x7Eまでです。 * それ以外の文字はそのまま返します。 */ public static String convertHanToZen(String s) { assert s != null; StringBuffer sb = new StringBuffer(s.length()); for (int i=0; i<s.length(); i++) { sb.append(convertHanToZen(s.charAt(i))); } return sb.toString(); } }
カタカナを載せようと思ったけれど、はてなのブログは半角カタカナが書けないみたい。
なので、全角のみはこちら。
秀丸で半角カタカナにしてくれる。
// 0xA1..0xDF "。「」、・ヲァィゥェォャュョッ"+ "ーアイウエオカキクケコサシスセソ"+ "タチツテトナニヌネノハヒフヘホマ"+ "ミムメモヤユヨラリルレロワン゛゜";