【工具】JAVA 全角转半角 半角转全角
【工具】JAVA 全角转半角 半角转全角
maven依赖 也可以不用 把判空字符串的那行改一下就行
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.20</version>
</dependency>
工具代码
import cn.hutool.core.util.StrUtil;
/**
* 字符工具
*/
public class CharUtil {
/**
* 半角转全角的函数(SBC case)
* 全角空格为12288,半角空格为32,其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
*
* @param input 任意字符串
* @return 全角字符串
*/
public static String toSbc(String input) {
if (StrUtil.isBlank(input)) {
return "";
}
char[] c = input.toCharArray();
for (int i = 0; i < c.length; i++) {
if (c[i] == 32) {
c[i] = (char) 12288;
continue;
}
if (c[i] < 127) {
c[i] = (char) (c[i] + 65248);
}
}
return new String(c);
}
/**
* 全角转半角的函数(DBC case)
* 全角空格为12288,半角空格为32 其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
*
* @param input 任意字符串
* @return 半角字符串
*/
public static String toDbc(String input) {
if (StrUtil.isBlank(input)) {
return "";
}
char[] c = input.toCharArray();
for (int i = 0; i < c.length; i++) {
if (c[i] == 12288) {
c[i] = (char) 32;
continue;
}
if (c[i] > 65280 && c[i] < 65375) {
c[i] = (char) (c[i] - 65248);
}
}
return new String(c);
}
/**
* 打印出java中所有Unicode编码的字符
*/
private static void printAllCharacter() {
for (int i = Character.MIN_VALUE; i <= Character.MAX_VALUE; ++i) {
System.out.println(i + " " + (char) i);
}
}
public static void main(String[] args) {
String str = "半角符号示例:,!~ 全角符号示例:,!~";
System.out.println("半角--->全角转换前:" + str);
String sbcResult = toSbc(str);
System.out.println("半角--->全角转换后:" + sbcResult);
System.out.println("全角--->半角转换前:" + str);
String dbcResult = toDbc(str);
System.out.println("全角--->半角转换后:" + dbcResult);
//打印出java所有字符
// printAllCharacter();
}
}