コーディングで、カナ、ひらがな、英数字
を全角に変換する必要な時があるでしょう
今回、全角変換について
共有したいと思います。
欲しけりゃくれてやる・・・。
探せ!
この世の全てをそこに置いてきた〜笑
目次
全角変換をするには、シンプルな方法:マッピングを作成する
やっぱり、シンプルには、自分で作成することかなと思う。
複雑しないのであれば、
オリジナルのマップを作成して、変換する
サンプルコード
/** * 半角→全角変換 * * @param value 変換元文字列 * @return 全角文字列 */ public static String convertHalfToFull(String value) { String result; // 変換内容がない場合 if(String.isEmpty(value)) { result = ''; }else{ // 全角文字のみなら以降スキップ if (Pattern.matches('[^ -~。-゚]+', value)) { result = value; }else{ // 濁音、半濁音は2文字で1文字に変換されるため先に実施 // ここはもっときれいにかける、Mapのputで、めんどいので、そのままにした Map<String, String> halftoFullMap1 = new Map<String, String>{ 'ガ' => 'ガ', 'ギ' => 'ギ', 'グ' => 'グ', 'ゲ' => 'ゲ', 'ゴ' => 'ゴ', 'ザ' => 'ザ', 'ジ' => 'ジ', 'ズ' => 'ズ', 'ゼ' => 'ゼ', 'ゾ' => 'ゾ', 'ダ' => 'ダ', 'ヂ' => 'ヂ', 'ヅ' => 'ヅ', 'デ' => 'デ', 'ド' => 'ド', 'バ' => 'バ', 'ビ' => 'ビ', 'ブ' => 'ブ', 'ベ' => 'ベ', 'ボ' => 'ボ', 'パ' => 'パ', 'ピ' => 'ピ', 'プ' => 'プ', 'ペ' => 'ペ', 'ポ' => 'ポ', 'ヴ' => 'ヴ' }; Map<String, String> halftoFullMap2 = new Map<String, String>{ '!' => '!', '"' => '”', '#' => '#', '$' => '$', '%' => '%', '&' => '&', '\'' => '’', '(' => '(', ')' => ')', '*' => '*', '+' => '+', ',' => ',', '-' => '−', '.' => '.', '/' => '/', '0' => '0', '1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', ':' => ':', ';' => ';', '<' => '<', '=' => '=', '>' => '>', '?' => '?', '@' => '@', 'A' => 'A', 'B' => 'B', 'C' => 'C', 'D' => 'D', 'E' => 'E', 'F' => 'F', 'G' => 'G', 'H' => 'H', 'I' => 'I', 'J' => 'J', 'K' => 'K', 'L' => 'L', 'M' => 'M', 'N' => 'N', 'O' => 'O', 'P' => 'P', 'Q' => 'Q', 'R' => 'R', 'S' => 'S', 'T' => 'T', 'U' => 'U', 'V' => 'V', 'W' => 'W', 'X' => 'X', 'Y' => 'Y', 'Z' => 'Z', '[' => '[', '\\' => '¥', ']' => ']', '^' => '^', '_' => '_', '`' => '‘', 'a' => 'a', 'b' => 'b', 'c' => 'c', 'd' => 'd', 'e' => 'e', 'f' => 'f', 'g' => 'g', 'h' => 'h', 'i' => 'i', 'j' => 'j', 'k' => 'k', 'l' => 'l', 'm' => 'm', 'n' => 'n', 'o' => 'o', 'p' => 'p', 'q' => 'q', 'r' => 'r', 's' => 's', 't' => 't', 'u' => 'u', 'v' => 'v', 'w' => 'w', 'x' => 'x', 'y' => 'y', 'z' => 'z', '{' => '{', '|' => '|', '}' => '}', '~' => '〜', ' ' => ' ', '。' => '。', '「' => '「', '」' => '」', '、' => '、', '・' => '・', 'ヲ' => 'ヲ', 'ァ' => 'ァ', 'ィ' => 'ィ', 'ゥ' => 'ゥ', 'ェ' => 'ェ', 'ォ' => 'ォ', 'ャ' => 'ャ', 'ュ' => 'ュ', 'ョ' => 'ョ', 'ッ' => 'ッ', 'ー' => 'ー', 'ア' => 'ア', 'イ' => 'イ', 'ウ' => 'ウ', 'エ' => 'エ', 'オ' => 'オ', 'カ' => 'カ', 'キ' => 'キ', 'ク' => 'ク', 'ケ' => 'ケ', 'コ' => 'コ', 'サ' => 'サ', 'シ' => 'シ', 'ス' => 'ス', 'セ' => 'セ', 'ソ' => 'ソ', 'タ' => 'タ', 'チ' => 'チ', 'ツ' => 'ツ', 'テ' => 'テ', 'ト' => 'ト', 'ナ' => 'ナ', 'ニ' => 'ニ', 'ヌ' => 'ヌ', 'ネ' => 'ネ', 'ノ' => 'ノ', 'ハ' => 'ハ', 'ヒ' => 'ヒ', 'フ' => 'フ', 'ヘ' => 'ヘ', 'ホ' => 'ホ', 'マ' => 'マ', 'ミ' => 'ミ', 'ム' => 'ム', 'メ' => 'メ', 'モ' => 'モ', 'ヤ' => 'ヤ', 'ユ' => 'ユ', 'ヨ' => 'ヨ', 'ラ' => 'ラ', 'リ' => 'リ', 'ル' => 'ル', 'レ' => 'レ', 'ロ' => 'ロ', 'ワ' => 'ワ', 'ン' => 'ン', '゙' => '゛', '゚' => '゜' }; // エスケープ必要文字 Set<String> escapeChars = new Set<String>(); escapeChars.add('\\'); escapeChars.add('*'); escapeChars.add('+'); escapeChars.add('.'); escapeChars.add('?'); escapeChars.add('{'); escapeChars.add('}'); escapeChars.add('('); escapeChars.add(')'); escapeChars.add('['); escapeChars.add(']'); escapeChars.add('^'); escapeChars.add('$'); escapeChars.add('|'); escapeChars.add('/'); for (String key : halftoFullMap1.keySet()) { if (value.contains(key)) { value = value.replaceAll(key, halftoFullMap1.get(key)); } } for (String key : halftoFullMap2.keySet()) { if (value.contains(key)) { String tempKey = key; if (escapeChars.contains(tempKey)) { tempKey = '\\' + tempKey; } value = value.replaceAll(tempKey, halftoFullMap2.get(key)); } } result = value; } } return result; }
まとめ
上記のマッピングは一部、もっとしようと思えば、まだまだいける
改善版:SFDC APEX 全角 半角 - Memos About SalesForce
ご参考までに!