/**
* 根据字符编码得到字符串实际占用长度
*/
public static int getStringLength(String str,String encoding) throws UnsupportedEncodingException {
if(GeneralUtil.isNull(str)) {
return 0;
} else {
return toDBC(str).getBytes(encoding).length;
}
}
/**
转半角的函数(DBC case)<br/><br/>
全角空格为12288,半角空格为32
其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
* @param input 任意字符串
* @return 半角字符串
*
*/
public static String toDBC(String input) {
char[] c = input.toCharArray();
for (int i = 0; i < c.length; i++) {
if (c[i] == 12288) {
//全角空格为12288,半角空格为32
c[i] = (char) 32;
continue;
}
if (c[i] > 65280 && c[i] < 65375)
//其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
c[i] = (char) (c[i] - 65248);
}
return new String(c);
}
public static void main(String[] args) throws UnsupportedEncodingException {
Object str = "17780735678";
// Object str = "13896032876、15012276";
System.err.println("len:" + getStringLength(str.toString(), "utf-8"));
System.err.println("len:" + str.toString());
System.err.println("len:" + toDBC(str.toString()));
System.err.println("len:" + toDBC(str.toString()).substring(0, 11));
System.err.println("len:" + str.toString().length());
System.err.println("len:" + toDBC(str.toString()).length());
}
根据字符编码得到字符串实际占用长度 + 全角转半角
最新推荐文章于 2022-07-07 21:25:00 发布