ICU4Jを使う
半角を全角にするライブラリがないか探していたらICU4Jというライブラリを見つけたので使ってみる。
まずは以下のサイトからダウンロードする。
IBM - Japan
で、以下のJarをクラスパスへ含める。
icu4j-3_6.jar
icu4j-charsets-3_6.jar
xliff-3_6.jar
Sample
package learning.icu4j; import java.util.regex.Matcher; import java.util.regex.Pattern; import com.ibm.icu.text.Transliterator; public class HalfToFull { public static void main(String[] args) { Transliterator tr = Transliterator.getInstance("Halfwidth-Fullwidth"); String result = tr.transliterate("123, % &-/*&'\" "); // ユニコード(\\uxxxx)が含まれる場合がある為、置き換える Pattern pattern = Pattern.compile("\\\\u[0-9][0-9][0-9][0-9]"); Matcher matcher = pattern.matcher(result); // マッチする文字列を含む限り繰り返す while (matcher.find()) { // 指定したグループの数だけ繰り返す for (int i = 0; i <= matcher.groupCount(); i++) { String character = matcher.group(i); result = result.replace(character, String.valueOf((char) Integer.parseInt(character.substring(2, 6), 16))); } } System.out.println(result); } }
半角スペースが全角スペースではなく、「\u3000」に置き換わってしまう為、「\u3000」を全角スペースにさらに置き換えてます。