package com.whatycms.common.util;import org.apache.commons.lang.StringUtils;/*** <PRE>* 提供对字符串的全角->半角,半角->全角转换* </PRE>*/
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 = ' '; // 半角空格/*** <PRE>* 半角字符->全角字符转换  * 只处理空格,!到˜之间的字符,忽略其他* </PRE>*/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();}/*** <PRE>* 全角字符->半角字符转换  * 只处理全角的空格,全角!到全角~之间的字符,忽略其他* </PRE>*/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));}
}

控制台输出如下:

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

java中全角半角字符的相互转换相关推荐

  1. java处理全角半角字符问题

    1.全角:指一个字符占用两个标准字符位置. 汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角字符.一般的系统命令是不用全角字符的,只是在作文字处理时才会使用全角字符 ...

  2. java 全角_java 全角半角字符转换的方法实例

    这篇文章主要介绍了java 全角半角字符转换的方法,大家参考使用吧 如果搞明白了Java中全角字符和半角字符之间的关系 那他们之间的转换根本就不是个事. 可以通过下面的程序看看Java中所有字符以及对 ...

  3. java判断全角半角

    Java判断全角半角: public void chkHalf(str){       for(int i=0;i<str.length;i++)           {             ...

  4. python 全角半角字符转换

    文章目录 1.相关原理 2. 相关代码 2.1 全角转半角 2.2 半角转全角 2.3 自定义转换 2.4 demo 参考文献 1.相关原理 全角即:Double Byte Character,简称D ...

  5. php区分全角半角字符,php如何判断是字符串全角还是半角

    php如何判断是字符串全角还是半角 关注:168  答案:2  手机版 解决时间 2021-01-15 16:08 提问者夏日╮悲歌 2021-01-15 00:27 php如何判断是字符串全角还是半 ...

  6. 对输入法中全角半角和中英文输入法的理解

    一.什么是全角和半角? 之所以有这样的区别,简单说就是中文系统用双字节显示汉字造成的与世界标准(由美国制订的)不一的问题. 说白了,对我们来说就是只针对中文的字库才有全角半角的说法. (1)全角 汉字 ...

  7. 字符串中全角半角之间的转换

    前几天,在做表单验证的时候,发现用户在输入表单内容的时候,正常情况下都是半角输入,但是也有可能是全角输入,所以就牵扯到全角输入内容的验证,这里便提供全角和半角之间的转换函数,与大家分享一下: 1.js ...

  8. JAVA实现全角半角相互转化 (full2Half half2Full)

    说明: 1.全角:指一个字符占用两个标准字符位置.汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角字符.一般的系统命令是不用全角字符的,只是在作文字处理时才会使用全 ...

  9. 全角半角字符及相互转换

    1.什么是全角和半角? 全角:是一种电脑字符,是指一个全角字符占用两个标准字符(或两个半角字符)的位置.全角占两个字节. 汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都 ...

最新文章

  1. CVPR2019:无人驾驶3D目标检测论文点评
  2. “树人杯”暨第三届辽宁科技大学校园程序设计竞赛正赛I 充分利用学习卡(粉)...
  3. 【 Vivado 】Performing System-Level Design Entry(总览)
  4. 已知旋转矩阵求角度_如何推导旋转矩阵
  5. 【PHP】常用日期函数
  6. 神策 FM | 科学创造「高价值」人生,终止“瞎忙”式勤奋
  7. 【忘川风华录】交互负责人:在奇幻和萌趣中探索国风的立体体验
  8. Linux下的MySQL安装及卸载
  9. Jonathan Bryce说:OpenStack属于全世界,并不属于一个公司,也不会属于一个国家……...
  10. 网站缩略图在线生成PHP源码
  11. 用 PHP 读取和编写 XML DOM
  12. Azure下通过Powreshell批量添加、删除VM终结点
  13. 解锁windows phone 8以进行开发
  14. bootstrap课程4 bootstrap的css样式有哪些内容需要注意
  15. Unity Shader 噪声消融特效 - 剑灵死亡特效
  16. js如何实现扫描身份证识别_JavaScript实现身份证验证代码
  17. 实验-产生式系统(python)
  18. 团队协同作战渗透工具 CS神器Cobalt Strike
  19. 微信小程序项目实践 项目范围及开发计划
  20. 十首最美的诗,醉美了整个秋天

热门文章

  1. 【黄啊码】安卓实现支付宝中的蚂蚁森林效果
  2. RStudio中更改R包安装位置
  3. 基于微信小程序的校友录系统
  4. ES-06-ElasticSearch映射关系
  5. (一)云计算技术学习--虚拟化vSphere学习
  6. Python之父,jave之父,你知道各大编程创始人现状如何吗
  7. 黑马瑞吉外卖、菩提阁学习总结
  8. 【IoT】TI BLE CC2541 串口控制蓝牙详解
  9. 游戏/微课堂录屏软件Camtasia Studio 2023中文版功能介绍及电脑ppt录制微课软件哪个好
  10. Hadoop之——Linux下sudo命令报错:hadoop is not in the sudoers file. This incident will be reported.