zl程序教程

您现在的位置是:首页 >  后端

当前栏目

java全角半角字符转换如何实现

JAVA转换字符 实现 如何 全角 半角
2023-06-13 09:14:41 时间
复制代码代码如下:

packagecom.whatycms.common.util;
importorg.apache.commons.lang.StringUtils;
/**
*<PRE>
*提供对字符串的全角->半角,半角->全角转换
*</PRE>
*/
publicclassBCConvert{
/**
*ASCII表中可见字符从!开始,偏移位值为33(Decimal)
*/
staticfinalcharDBC_CHAR_START=33;//半角!
/**
*ASCII表中可见字符到~结束,偏移位值为126(Decimal)
*/
staticfinalcharDBC_CHAR_END=126;//半角~
/**
*全角对应于ASCII表的可见字符从!开始,偏移值为65281
*/
staticfinalcharSBC_CHAR_START=65281;//全角!
/**
*全角对应于ASCII表的可见字符到~结束,偏移值为65374
*/
staticfinalcharSBC_CHAR_END=65374;//全角~
/**
*ASCII表中除空格外的可见字符与对应的全角字符的相对偏移
*/
staticfinalintCONVERT_STEP=65248;//全角半角转换间隔
/**
*全角空格的值,它没有遵从与ASCII的相对偏移,必须单独处理
*/
staticfinalcharSBC_SPACE=12288;//全角空格12288
/**
*半角空格的值,在ASCII中为32(Decimal)
*/
staticfinalcharDBC_SPACE="";//半角空格
/**
*<PRE>
*半角字符->全角字符转换
*只处理空格,!到˜之间的字符,忽略其他
*</PRE>
*/
privatestaticStringbj2qj(Stringsrc){
if(src==null){
returnsrc;
}
StringBuilderbuf=newStringBuilder(src.length());
char[]ca=src.toCharArray();
for(inti=0;i<ca.length;i++){
if(ca[i]==DBC_SPACE){//如果是半角空格,直接用全角空格替代
buf.append(SBC_SPACE);
}elseif((ca[i]>=DBC_CHAR_START)&&(ca[i]<=DBC_CHAR_END)){//字符是!到~之间的可见字符
buf.append((char)(ca[i]+CONVERT_STEP));
}else{//不对空格以及ascii表中其他可见字符之外的字符做任何处理
buf.append(ca[i]);
}
}
returnbuf.toString();
}
/**
*<PRE>
*全角字符->半角字符转换
*只处理全角的空格,全角!到全角~之间的字符,忽略其他
*</PRE>
*/
publicstaticStringqj2bj(Stringsrc){
if(src==null){
returnsrc;
}
StringBuilderbuf=newStringBuilder(src.length());
char[]ca=src.toCharArray();
for(inti=0;i<src.length();i++){
if(ca[i]>=SBC_CHAR_START&&ca[i]<=SBC_CHAR_END){//如果位于全角!到全角~区间内
buf.append((char)(ca[i]-CONVERT_STEP));
}elseif(ca[i]==SBC_SPACE){//如果是全角空格
buf.append(DBC_SPACE);
}else{//不处理全角空格,全角!到全角~区间外的字符
buf.append(ca[i]);
}
}
returnbuf.toString();
}
publicstaticvoidmain(String[]args){
System.out.println(StringUtils.trimToEmpty("a,b,c"));
Strings="nihaohk |   nihehe ,。 78  7 ";
s=BCConvert.qj2bj(s);
System.out.println(s);
System.out.println(BCConvert.bj2qj(s));
}
}

控制台输出如下:
复制代码代码如下:

a,b,c
nihaohk|nihehe,。787
nihaohk |   nihehe ,。 78  7