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
相关文章
- Java单例模式的5种实现方法
- java 特点_JAVA的几个重要特点[通俗易懂]
- 物业管理系统源码java_Java小区物业管理系统 源码报告下载
- java编译报错提示编码GBK的不可映射字符啥意思_java字符串编码转换
- Java转换流_java中的字符使用什么编码
- java输出日期格式_java时区转换
- integer转string java_Integer转换为String类型[通俗易懂]
- java list 转json 字符串_JSON的String字符串与Java的List列表对象的相互转换
- JAVA静态内部类_java静态内部类实例化
- java字符串转换为json对象6_Json对象与Json字符串的转化、JSON字符串与Java对象的转换…
- Java map转实体类_java实体类转json
- JAVA英文文献_java毕业论文参考文献
- java查找字符的方法_Java字符串查找(3种方法)
- Java方法重载_java入门方法的使用
- Java学习笔记之一java关键字及作用详解编程语言
- 那些经常被遗忘的 Java 面试题详解编程语言
- SSH框架问题——java.lang.NoClassDefFoundError: org/springframework/dao/support/PersistenceExceptionTransla详解编程语言
- 时间利用Redis设置Java对象自动过期(redisjava过期)
- 策略实现Redis中Java过期策略的最佳实践(redisjava过期)
- Java面试中的Redis题目剖析(java面试题redis)
- Novice:学习Java 7 在Linux上的简单入门(java 7 linux)
- 使用Linux安装Java轻松搞定!(linux java安装)
- java获取properties属性文件示例