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

2016-02-19 11:38 5 1 收藏

今天图老师小编要跟大家分享java 全角半角字符转换如何实现,精心挑选的过程简单易学,喜欢的朋友一起来学习吧!

【 tulaoshi.com - 编程语言 】

代码如下:

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 

来源:https://www.tulaoshi.com/n/20160219/1598055.html

延伸阅读
标签: 电脑入门
一、JIS函数 语法:JIS(text) 功能,将半角字符转换为全角字符。 text参数为必须的,不能省略。 实例: 比如,=JIS("G")函数返回字母G的全角,其结果为:G 注意,该函数在Excel2010下才能使用。 二、asc函数 法:asc(text) 功能,将全角字符转换为半角字符。 text参数为必须的,不能省略。 实例: 比如,=asc("G&qu...
标签: PHP
 function ChgTitle($title) { $length = 46; if (strlen($title)$length) { $temp = 0; for($i=0; $i<$length; $i++) if (ord($title[$i]) 128) $temp++; if ($temp%2 == 0) $title = substr($title,0,$length)."..."; else $title = substr($title,0,$length+1)."..."; } return $t...
标签: Web开发
script language="javascript" //手机检测 function checkMobile(num){     reg=/^13[0-9]\d{8}$/;     if(reg.test(num)){         return true;     }else{         re...
标签: 电脑入门
MAC系统自带的拼音输入法是一种堪比搜狗输入法的输入法,使用这种输入法,同样可以给我们带来大量的词汇库存。但是对于一些从事文字工作的用户来说,MAC自带的输入法是有很大的缺陷的,那就是它的全角和半角之间无法切换。那么该如何解决这个问题呢? 首先,Mac OS系统没有这样功能的话我们只能通过其他输入法来实现我们的愿望。基于国内的 Ma...
toHexString public static String toHexString(int i)以十六进制的无符号整数形式返回一个整数参数的字符串表示形式。 如果参数为负,那么无符号整数值为参数加上 232;否则等于该参数。将该值转换为十六进制(基数 16)的无前导 0 的 ASCII 数字字符串。如果无符号数的大小值为零,则用一个零字符 '0' ('\u0030') 表示它;否则,无符号数大...

经验教程

567

收藏

35
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部