黑马程序员技术交流社区
标题:
如何取出一个字符串中汉字的字节数
[打印本页]
作者:
而今从头越2012
时间:
2012-12-27 15:41
标题:
如何取出一个字符串中汉字的字节数
比如下面的代码:
String str = "我adb3们daio";
for(int i=0; i<str.length(); i++){
System.out.println(str.charAt(i));
}
当i=1时,可以取出第一个汉字,而这个汉字是以字符的形式出现的,无法获取这个字符的字节数。怎么判断,才能知道取得一个字符就是一个汉字?
作者:
清水
时间:
2012-12-27 17:00
gbk中,汉字的占2个byte而且这两个byte都是1开头的,也就是一个负数。
作者:
清水
时间:
2012-12-27 17:06
吧string使用getBytes转成byte数组。
遍历判断是否为负,为负的的话,这个byte是汉字中的一个(可能是前面的一个,也可能是后面的一个),还要继续往前判断。
比如:
我adb3们daio
--++++--+++
这个还好弄,前面还是负的,那么前面的一个位置的byte,加上当前的位置的byte就是一个汉字。
遍历判断是否为负
-- -- -- -- -- -- -- --
而这个,你不光要判断前面的,还要一直判断到第一个byte,从而确定这个位置的byte是一个汉字的开头还是结尾的byte。
可能写得不是很清楚,但我尽力了。 希望你明白。这个是我入学测试里的题目。
作者:
陈琦
时间:
2012-12-27 17:11
public class Test10 {
public static void main(String[] args) {
String str = "我ABC汉DEF";
byte b []= str.getBytes();
int num = 6;
if(b[5]<0&&b[6]<0) {
System.out.println(new String(b,0,num-1));
}else{
System.out.println(new String(b,0,6));
}
}
}
复制代码
我得测试题,写的不完善,就那么个意思,你再组织一下吧
作者:
清水
时间:
2012-12-27 19:32
楼上的代码有问题。
你试试:
我的代码没问题,7
a我的代码没问题,7
作者:
陈雪平
时间:
2012-12-28 21:05
汉字的默认编码gbk。所以一个汉字占两个字节,且都是负数。 用getBytes()方法获取所输入字符串的字节数组byte[],遍历数组,计算出有多少负数,负数的和就是所求字符串中汉字的字节数了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2