java中全角半角字符的相互转换
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中全角半角字符的相互转换相关推荐
- java处理全角半角字符问题
1.全角:指一个字符占用两个标准字符位置. 汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角字符.一般的系统命令是不用全角字符的,只是在作文字处理时才会使用全角字符 ...
- java 全角_java 全角半角字符转换的方法实例
这篇文章主要介绍了java 全角半角字符转换的方法,大家参考使用吧 如果搞明白了Java中全角字符和半角字符之间的关系 那他们之间的转换根本就不是个事. 可以通过下面的程序看看Java中所有字符以及对 ...
- java判断全角半角
Java判断全角半角: public void chkHalf(str){ for(int i=0;i<str.length;i++) { ...
- python 全角半角字符转换
文章目录 1.相关原理 2. 相关代码 2.1 全角转半角 2.2 半角转全角 2.3 自定义转换 2.4 demo 参考文献 1.相关原理 全角即:Double Byte Character,简称D ...
- php区分全角半角字符,php如何判断是字符串全角还是半角
php如何判断是字符串全角还是半角 关注:168 答案:2 手机版 解决时间 2021-01-15 16:08 提问者夏日╮悲歌 2021-01-15 00:27 php如何判断是字符串全角还是半 ...
- 对输入法中全角半角和中英文输入法的理解
一.什么是全角和半角? 之所以有这样的区别,简单说就是中文系统用双字节显示汉字造成的与世界标准(由美国制订的)不一的问题. 说白了,对我们来说就是只针对中文的字库才有全角半角的说法. (1)全角 汉字 ...
- 字符串中全角半角之间的转换
前几天,在做表单验证的时候,发现用户在输入表单内容的时候,正常情况下都是半角输入,但是也有可能是全角输入,所以就牵扯到全角输入内容的验证,这里便提供全角和半角之间的转换函数,与大家分享一下: 1.js ...
- JAVA实现全角半角相互转化 (full2Half half2Full)
说明: 1.全角:指一个字符占用两个标准字符位置.汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角字符.一般的系统命令是不用全角字符的,只是在作文字处理时才会使用全 ...
- 全角半角字符及相互转换
1.什么是全角和半角? 全角:是一种电脑字符,是指一个全角字符占用两个标准字符(或两个半角字符)的位置.全角占两个字节. 汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都 ...
最新文章
- CVPR2019:无人驾驶3D目标检测论文点评
- “树人杯”暨第三届辽宁科技大学校园程序设计竞赛正赛I 充分利用学习卡(粉)...
- 【 Vivado 】Performing System-Level Design Entry(总览)
- 已知旋转矩阵求角度_如何推导旋转矩阵
- 【PHP】常用日期函数
- 神策 FM | 科学创造「高价值」人生,终止“瞎忙”式勤奋
- 【忘川风华录】交互负责人:在奇幻和萌趣中探索国风的立体体验
- Linux下的MySQL安装及卸载
- Jonathan Bryce说:OpenStack属于全世界,并不属于一个公司,也不会属于一个国家……...
- 网站缩略图在线生成PHP源码
- 用 PHP 读取和编写 XML DOM
- Azure下通过Powreshell批量添加、删除VM终结点
- 解锁windows phone 8以进行开发
- bootstrap课程4 bootstrap的css样式有哪些内容需要注意
- Unity Shader 噪声消融特效 - 剑灵死亡特效
- js如何实现扫描身份证识别_JavaScript实现身份证验证代码
- 实验-产生式系统(python)
- 团队协同作战渗透工具 CS神器Cobalt Strike
- 微信小程序项目实践 项目范围及开发计划
- 十首最美的诗,醉美了整个秋天
热门文章
- 【黄啊码】安卓实现支付宝中的蚂蚁森林效果
- RStudio中更改R包安装位置
- 基于微信小程序的校友录系统
- ES-06-ElasticSearch映射关系
- (一)云计算技术学习--虚拟化vSphere学习
- Python之父,jave之父,你知道各大编程创始人现状如何吗
- 黑马瑞吉外卖、菩提阁学习总结
- 【IoT】TI BLE CC2541 串口控制蓝牙详解
- 游戏/微课堂录屏软件Camtasia Studio 2023中文版功能介绍及电脑ppt录制微课软件哪个好
- Hadoop之——Linux下sudo命令报错:hadoop is not in the sudoers file. This incident will be reported.