中文 字母 长度 的问题。

来源:百度知道 编辑:UC知道 时间:2024/09/19 15:54:27
java问题:

有一个很长,由中文,数字,字母混合组成的字符串

要求:接取出在屏幕上只显示固定的长度,

谁知道怎么计算?

这里最主要的问题,是String.length()求出的无论是“字”还是"w"的长度都是1,而事实上,“字”这个字要比“W”这个字宽一些,怎么办?

public static void getLen() {
System.out.println("getLen()--------------------------------");
String s = "中草药aaa俗不可耐WWWW历史性能动态势均力敌1212121alkfjdklasjklfj";
byte[] b = s.getBytes();
int len = 22; // 截取的长度
int count = 0;
// 判断最后一个字节是否是汉字的前半部分
for (int i = 0; i < b.length; i++) {
if (b[i] < 0 && count == 1) {
count--;
} else if (b[i] < 0) {
count++;
}
if (i + 1 == len) {
break;
}
}
String ss = null;
if (count == 1) { // 最后一个字节是汉字的前半部分
ss = new String(b, 0, len + 1); //如果遇到半个汉字,就把另外的一半也加上。防止把一个汉字截成两半。
} else {
ss = new String(b, 0, len);
}
System.out.println(ss);
}

取查一下unicode码表,汉字有个编码范围