关于一个字符串输出截取问题 你若用string的sub方法的话,是按实际的字符来切割的。java根据字符编码和字节的值可以判断哪些自己组合起来成为一个字符,哪些是独立的一个字符。如果你强制将字符串转成字节,再截取一部分转换成字符串,那要么乱码要么出错。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个问题又出现了= = public static String sub(String str, int num) { if (num <= 0) return ""; StringBuffer sb = new StringBuffer(); char[] ch = str.toCharArray(); for (int count = 0, i = 0; i < ch.length; i++) { char c = ch[i]; do { count++; } while ((c >>= 8) != 0); if (count > num) break; sb.append(ch[i]); } return sb.toString(); } 因为java的char是16位的,所以转换为char数组再回去时不会出问题的,但是一个如果是中文或者其他一些奇奇怪怪的东西,一个char就是2个字符了转换为byte数组的话如果直接截取就可能会出现一个汉字截了一半导致乱码的情况出现 更正………………一个char就是2个字符了应该是2个字节了……………… 好像还是有点问题,你这样写“ABC你好”按照题目是说他占7个字节,现在要输出6个字节,但是“好”占第6和7字节,不能把他输出,你这样好像还是会输出的? 不会啊,这个你测试一下就知道了到"ABC你"的时候count是5,然后读到"好",这个时候count变成7了,所以这个"好"就没有被append到那个StringBuffer里去,所以也就不会输出的 怎么把浮点型小数转化为百分数????????只取十位数 关于构造器 JAVA操作EXCEL问题! 关于补码的问题 请好心的高手帮帮忙。。一道JAVA题目。如果能帮忙做下。感激不尽。谢谢 请教,Thread.sleep(1)后,介面锁死的情况 关于JComboBox的问题 在命令提示符里输入什么DOS命令可将输入的中文转换为Unicode吗啊?如native2...具体视什么啊?急 关于列表框项目选定的问题 Spring Boot Actuator, endpoints.health.sensitive=false设置无效 求小问题的解决方法,高手来看看~! apache vfs 监视文件变化
public static String sub(String str, int num) {
if (num <= 0)
return "";
StringBuffer sb = new StringBuffer();
char[] ch = str.toCharArray();
for (int count = 0, i = 0; i < ch.length; i++) {
char c = ch[i];
do {
count++;
} while ((c >>= 8) != 0);
if (count > num)
break;
sb.append(ch[i]);
}
return sb.toString();
}
转换为byte数组的话如果直接截取就可能会出现一个汉字截了一半导致乱码的情况出现
应该是2个字节了………………
但是“好”占第6和7字节,不能把他输出,你这样好像还是会输出的?