次のようにコードをコピーします。
パッケージ com.whatycms.common.util;
org.apache.commons.lang.StringUtils をインポートします。
/**
* <プレ>
※文字列の全角→半角、半角→全角変換を提供
* </PRE>
*/
パブリック クラス BCConvert {
/**
* ASCII テーブルで表示される文字は ! から始まり、オフセット値は 33 (10 進数) です。
*/
static Final char DBC_CHAR_START = 33;
/**
* ASCII テーブルに表示される文字は ~ で終わり、オフセット値は 126 (10 進数) です。
*/
static Final char DBC_CHAR_END = 126;
/**
※全角はASCII表の表示文字に対応します!オフセット値 65281 で開始します
*/
static Final char SBC_CHAR_START = 65281; // 全角!
/**
※全角はASCIIテーブルの~の末尾までの表示文字に対応し、オフセット値は65374です
*/
static Final char SBC_CHAR_END = 65374; // 全角 ~
/**
* ASCII テーブル内のスペースを除く表示可能な文字と対応する全角文字間の相対オフセット
*/
static Final int CONVERT_STEP = 65248; // 全角と半角の変換間隔
/**
※ASCIIからの相対オフセットに従わない全角スペースの値は別途処理が必要
*/
static Final char SBC_SPACE = 12288 // 全角スペース 12288;
/**
※半角スペースの値、ASCII表記では32(10進数)
*/
static Final char DBC_SPACE = ' ' // 半角スペース
/**
* <プレ>
※半角文字→全角文字変換
* スペース、! と ˜ の間の文字のみを処理し、その他は無視します
* </PRE>
*/
プライベート静的文字列 bj2qj(String src) {
if (src == null) {
ソースを返します。
}
StringBuilder buf = new StringBuilder(src.length());
char[] ca = src.toCharArray();
for (int i = 0; i < ca.length; i++) {
if (ca[i] == DBC_SPACE) { // 半角スペースの場合は直接全角スペースに置き換える
buf.append(SBC_SPACE);
} else if ((ca[i] >= DBC_CHAR_START) && (ca[i] <= DBC_CHAR_END)) { // 文字は ! から ~ までの間に表示されます。
buf.append((char) (ca[i] + CONVERT_STEP));
} else { // スペースおよび ASCII テーブル内のその他の表示可能な文字以外の文字に対しては処理を行いません。
buf.append(ca[i]);
}
}
戻り buf.toString();
}
/**
* <プレ>
※全角文字→半角文字変換
※全角スペースのみ対応!全角 ~ の間の文字に変換し、それ以外の文字は無視されます
* </PRE>
*/
public static String qj2bj(String src) {
if (src == null) {
ソースを返します。
}
StringBuilder buf = new StringBuilder(src.length());
char[] ca = src.toCharArray();
for (int i = 0; i < src.length(); i++) {
if (ca[i] >= SBC_CHAR_START && ca[i] <= SBC_CHAR_END) { // 全角の場合!全幅~範囲まで
buf.append((char) (ca[i] - CONVERT_STEP));
} else if (ca[i] == SBC_SPACE) { // 全角スペースの場合
buf.append(DBC_SPACE);
} else { //全角スペースは扱わないでください、全角です!範囲外の全角〜文字まで
buf.append(ca[i]);
}
}
戻り buf.toString();
}
public static void main(String[] args) {
System.out.println(StringUtils.trimToEmpty(" a,b ,c "));
文字列 s = "ニハオク | ニヘヘヘ ,. 78 7 ";
s=BCConvert.qj2bj(s);
System.out.println;
System.out.println(BCConvert.bj2qj(s));
}
}
コンソール出力は次のとおりです。
次のようにコードをコピーします。
a、b、c
ニハオク | ニヘヘ、。 78 7
んはーく|| にへへ、。 78 7