2013年12月19日木曜日

全角英数は半角英数に、半角カナは全角カナに変換する

九州のパートナー会で作成しているQAアプリで必要になったので調査しました。

要件としては「入力された半角・全角をどちらかに統一したい」ということ。

英数は半角で、カナは全角で統一するのがすっきしますよね。

ということで調べてみました。

ICU4JというJavaライブラリがあるんですね。これを使えば簡単そうです。

この例の他にも、変換の方法が色いろあるようです。ちょっと調べてみよう。

 

準備

  1. ICUのサイトからICU4Jをダウンロードする。http://site.icu-project.org/download
  2. ZIPファイルを展開し、icu4j-52_1.jar を取り出す。
  3. Designerのパッケージエクスプローラの「WebContent > WEB-INF > lib」に「icu4j-52_1.jar」をコピーする。

使い方

全角英数は半角英数に、半角カナは全角カナに変換するには、下記のStaticメソッドを呼ぶ

com.ibm.icu.text.Normalizer.normalize("変換する文字", com.ibm.icu.text.Normalizer.NFKC);

 

例: XPagesを作って下記をコピペしたら動きます。

 

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
    <p>
        <xp:inputText id="input" style="width: 30em"
            defaultValue="#{'ABCDEFG12345アイウエオABC123アイウエオガギグゲゴ'}">
        </xp:inputText>
        <xp:button id="change" value="変換">
            <xp:eventHandler event="onclick" submit="true"
                refreshMode="partial" refreshId="trans">
                <xp:this.action><![CDATA[#{javascript:var input:com.ibm.xsp.component.xp.XspInputText = getComponent("input");
var sourceString = input.getValueAsString();
var transString = com.ibm.icu.text.Normalizer.normalize(sourceString,
com.ibm.icu.text.Normalizer.NFKC);
var trans:com.ibm.xsp.component.xp.XspOutputText = getComponent("trans");
trans.setValue(transString);
}]]></xp:this.action>
            </xp:eventHandler></xp:button>
    </p>
    <p>
        <xp:text id="trans"></xp:text>
    </p>
</xp:view>

0 件のコメント:

コメントを投稿