如果搞明白了Java中全角字符和半角字符之间的关系,那他们之间的转换就不是个麻烦事儿.你只需要对这个关系有那么一个印象就足够了.

全角字符与半角字符的关系

通过下面的代码能看到Java中所有字符以及对应编码的值

    public static void main(String[] args) {
for (int i = Character.MIN_VALUE; i <= Character.MAX_VALUE; ++i) {
System.out.println(i + " " + (char)i);
}
}

从输出可以看到

  1. 半角字符是从开始到结束
  2. 与半角字符对应的全角字符是从开始到结束
  3. 其中半角的空格是32.对应的全角空格是12288

半角和全角的关系很明显,除空格外的字符偏移量是(- = )

Java语言实现全角、半角之间的转换

了解了全半角字符之间的关系,再来看看Java的实现

     /**
* 全角字符串转换半角字符串
*
* @param fullWidthStr
* 非空的全角字符串
* @return 半角字符串
*/
private static String fullWidth2halfWidth(String fullWidthStr) {
if (null == fullWidthStr || fullWidthStr.length() <= 0) {
return "";
}
char[] charArray = fullWidthStr.toCharArray();
//对全角字符转换的char数组遍历
for (int i = 0; i < charArray.length; ++i) {
int charIntValue = (int) charArray[i];
//如果符合转换关系,将对应下标之间减掉偏移量65248;如果是空格的话,直接做转换
if (charIntValue >= 65281 && charIntValue <= 65374) {
charArray[i] = (char) (charIntValue - 65248);
} else if (charIntValue == 12288) {
charArray[i] = (char) 32;
}
}
return new String(charArray);
}

Java全角、半角字符的关系以及转换的更多相关文章

  1. java中全角半角字符的相互转换的代码

    如下内容是关于java中全角半角字符的相互转换的内容.package com.whatycms.common.util; import org.apache.commons.lang.StringUt ...

  2. 我的Android进阶之旅------>Java全角半角的转换方法

    一中文全角和半角输入的区别 1全角指一个字符占用两个标准字符位置 2半角指一字符占用一个标准的字符位置 3全角与半角各在什么情况下使用 4全角和半角的区别 5关于全角和半角 6全角与半角比较 二转半角 ...

  3. C# 全角半角字符互转

    /// <summary> /// 全角空格为12288,半角空格为32 /// 其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248 /// < ...

  4. java 全角半角转换函数

    /** * 半角转全角 * @param input String. * @return 全角字符串. */ public static String ToSBC(String input) { ch ...

  5. Java如何判断字符串中包含有全角,半角符号

    首先介绍下全角跟半角之间的区别: 在计算机屏幕上,一个汉字要占两个英文字符的位置,人们把一个英文字符所占的位置称为"半角",相对地把一个汉字所占的位置称为"全角" ...

  6. java全角和半角转换

    package test; public class HalfAndFullConverseUtil { /** * ASCII表中可见字符从!开始,偏移位值为33(Decimal) */ priva ...

  7. python实现全角半角的相互转换

    缘起 在自然语言处理过程中,全角.半角的的不一致会导致信息抽取不一致,因此需要统一. 转换说明 全角半角转换说明 有规律(不含空格): 全角字符unicode编码从65281~65374 (十六进制 ...

  8. SQL转换全角/半角函数

    /****** SQL转换全角/半角函数 开始******/ CREATE FUNCTION ConvertWordAngle ( ), --要转换的字符串 @flag bit --转换标志,0转换成 ...

  9. web页面全角&半角

    根据Unicode编码,全角空格为12288,半角空格为32 : 其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248  全角-->半角函数  //半角转换 ...

随机推荐

  1. Objective-C枚举的几种定义方式与使用

    假设我们需要表示网络连接状态,可以用下列枚举表示: enum CSConnectionState { CSConnectionStateDisconnected, CSConnectionStateC ...

  2. beans.xml

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  3. Spring异步功能

    使用 Spring 的异步功能时,实质是使用的 Servlet3 及以上版本的异步功能. Spring 的异步处理机制需要在 web.xml 中全部的 servlet 和 filter 处配置 < ...

  4. asp.net core 实战之 redis 负载均衡和"高可用"实现

    1.概述 分布式系统缓存已经变得不可或缺,本文主要阐述如何实现redis主从复制集群的负载均衡,以及 redis的"高可用"实现, 呵呵双引号的"高可用"并不是 ...

  5. 《Walking the callstack(转载)》

    本文转载自:https://www.codeproject.com/articles/11132/walking-the-callstack Download demo project with so ...

  6. AutoMapper(三)

    返回总目录 自定义类型转换 有时,需要完全控制一个类型到另一个类型的转换.一个类型一点都不像另一个类型,而且转换函数已经存在了,在这种情况下,你想要从一个“宽松”的类型转换成一个更强壮的类型,例如一个 ...

  7. Floyd-Warshall 全源最短路径算法

    Floyd-Warshall 算法采用动态规划方案来解决在一个有向图 G = (V, E) 上每对顶点间的最短路径问题,即全源最短路径问题(All-Pairs Shortest Paths Probl ...

  8. Angular2学习笔记——路由器模型(Router)

    Angular2以组件化的视角来看待web应用,使用Angular2开发的web应用,就是一棵组件树.组件大致分为两类:一类是如list.table这种通放之四海而皆准的通用组件,一类是专为业务开发的 ...

  9. [Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)

    如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html   谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大 ...

  10. iOS-----程序异常处理----- 断言NSAssert()和NSParameterAssert区别和用处

    NSAssert和assert是断言,主要的差别是assert在断言失败的时候只是简单的终止程序,而NSAssert会报告出错误信息并且打印出来.所以尽管的使用NSAssert,可以不去使用asser ...