JAvaにおける全角半角文字の相互変換
2912 ワード
import org.apache.commons.lang.StringUtils;
/**
*
* -> , ->
*
*/
public class BCConvert {
/**
*ASCIIテーブルに される は! 、オフセットビット 33(Decimal)
*/
static final char DBC_CHAR_START = 33;// !
/**
*ASCIIテーブルに される は~の までで、オフセットビット は126(Decimal)です.
*/
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(Decimal)
*/
static final char DBC_SPACE = ' ';// スペース
/**
*
* ->
* ,! ˜ ,
*
*/
private static String bj2qj(String src) {
if (src == null) {
return src;
}
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]);
}
}
return buf.toString();
}
/**
*
* ->
* , ! ~ ,
*
*/
public static String qj2bj(String src) {
if (src == null) {
return src;
}
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]);
}
}
return buf.toString();
}
public static void main(String[] args) {
System.out.println(StringUtils.trimToEmpty("a,b ,c "));
String s = "nihaohk | nihehe ,. 78 7 ";
s=BCConvert.qj2bj(s);
System.out.println(s);
System.out.println(BCConvert.bj2qj(s));
System.out.println("-----------");
String s2 = ",|,";
System.out.println(BCConvert.qj2bj(s2));
}
}
:http://blog.csdn.net/yaerfeng/article/details/8249064