范围(无空格):
全角字符unicode编码从65281~65374(十六进制0xFF01 ~ 0xFF5E)
半角字符unicode编码从33~126(十六进制0x21~ 0x7E)
特例:
空格比较特殊,全角为12288(0x3000),半角为 32(0x20)
全角半角转换的间隔 为65248
注:
1. 中文文字永远是全角,只有英文字母、数字键、符号键才有全角半角的概念,一个字母或数字占一个汉字的位置叫全角,占半个汉字的位置叫半角。
2. 引号在中英文、全半角情况下是不同的。
//全角转半角
public static String fullToHalf(String value){
if(value==null || "".equals(value)){
return value;
}
char[] cha=value.toCharArray();
for(int i=0;i<cha.length;i++){
if(cha[i]==12288){
cha[i]=(char)32;
}else if(cha[i]>=65281 && cha[i]<=65374){
cha[i]=(char)(cha[i]-65248);
}
}
return new String(cha);
}
//半角转全角
public static String halfToFull(String value){
if(value==null || "".equals(value)){
return value;
}
char[] cha=value.toCharArray();
for(int i=0;i<cha.length;i++){
if(cha[i]==32){
cha[i]=(char)12288;
}else if(cha[i]>=33 && cha[i]<=126){
cha[i]=(char)(cha[i]+65248);
}
}
return new String(cha);
}