カタカナからひらがなへ
だいぶ前に、
カタカナ --> ひらがな
ひらがな --> カタカナ
の変換を行う処理が必要になって、、
「またっ、めんっどくさいのが来たなぁ」って文句言ってた人がいたが
全然めんどくさくなかったのでjavaでつくったやつをここで書いてみる。
/** * ひらがなカタカナ変換クラス * * @author satoooor */ public class KanaConverter { private static final String HIRAGANA = "ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん"; private static final String KATAKANA = "ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲン"; private static Map<Character, Character> HtoKMap = new HashMap<Character, Character>(HIRAGANA.length()); private static Map<Character, Character> KtoHMap = new HashMap<Character, Character>(KATAKANA.length()); static { for (int i = 0; i < HIRAGANA.length(); i++) { // ひらがなとカタカナのマッピング 文字列長が同じ長さであることが前提... HtoKMap.put(HIRAGANA.charAt(i), KATAKANA.charAt(i)); KtoHMap.put(KATAKANA.charAt(i), HIRAGANA.charAt(i)); } // 対応したひらがなが無いカタカナを無理やり対応する KtoHMap.put('ヴ', 'う'); KtoHMap.put('ヵ', 'か'); KtoHMap.put('ヶ', 'か'); } /** * ひらがなからカタカナへ変換 * * @param src * 対象文字列 * @return ひらがな文字列 */ public static String toHiragana(String src) { StringBuilder sb = new StringBuilder(src.length()); for (int i = 0; i < src.length(); i++) { char c = src.charAt(i); Character cha = KtoHMap.get(c); // 想定外の文字列の場合は元の文字をはめる sb.append(cha == null ? c : cha); } return sb.toString(); } /** * カタカナからひらがなへ変換 * * @param src * 対象文字列 * @return カタカナ文字列 */ public static String toKatakana(String src) { StringBuilder sb = new StringBuilder(src.length()); for (int i = 0; i < src.length(); i++) { char c = src.charAt(i); Character cha = HtoKMap.get(c); // 想定外の文字列の場合は元の文字をはめる sb.append(cha == null ? c : cha); } return sb.toString(); } }
正味、50行くらい?
全然めんどくさくなかった。
(そりゃjavaだから短く書くのは難しくて、多少書き方として多くなるけどさ、、、)
めんどくさいと言っていた人、このソースよりももっとめんどくさいのいっぱい書いてるじゃん、自分。
if分連発とかフラグだらけのプログラムとかさww