当前位置: 移动技术网 > IT编程>开发语言>Java > java 全角半角字符转换如何实现

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

2019年07月22日  | 移动技术网IT编程  | 我要评论

鱼具商城,裕峰城市花园,台儿庄

复制代码 代码如下:

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 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网