黑马程序员技术交流社区

标题: 从一个字符串中按字节数截取一部分:另一种解法 [打印本页]

作者: NOTHIING    时间: 2016-10-15 13:09
标题: 从一个字符串中按字节数截取一部分:另一种解法


public clas XXX{

        /**
         *Test50-编写函数,从一个字符串中按字节数截取一部分,但不能截取出半个中文(GBK码表)
         *例如:从“HM程序员”中截取2个字节是“HM”,截取4个则是“HM程”,
         *截取3个字节也要是"HM"而不要出现半个中文

         */
        public static void main(String[] args) {
                final int num =7; //num代表要截取的字节数量
                String s ="HM程序s员";
                byte[] b = s.getBytes();
                byte[] b1 = new byte[1];//用来存放字符的字节
                byte[] b2 = new byte[2];//用来存放中文的字节

                for (int i = 0; i < num; i++) {
                        //如果读取的字节大于0,说明是一个字符,当然中文的第二个字节也有可能大于0(0x40-0xFE),
                        //所以如果第一个字节小于0,就要连续跳过两个字节;
                        if(b[i]>=0){
                                b1[0] = b[i];//如果此字节小于0,则直接转换成字符;
                                System.out.println(new String(b1));
                        }
                        //如果小于0,则说明是中文的一个字节;
                        else{
                                if(i<num)
                                        b2[0] = b[i++];
                                if(i<num){ //如果i大于num,说明已经读到最后一个字节,但是此字节是中文的半个字节,无法组成字符,ze不打印
                                        b2[1] = b[i];         //这里i不能再++,因为for循环里面i++,如果加的话就会跳过一个字节
                                        System.out.println(new String(b2));
                                }
                                       
                        }
                               
                               
                               
                }
        }

}



作者: 哦啊啊    时间: 2016-10-15 14:17
SYSO哈哈哈哈不知道

作者: beleveyourself    时间: 2016-10-15 17:53
请教老师呗,

作者: 13902480061    时间: 2016-10-15 20:46


作者: NOTHIING    时间: 2016-10-15 20:47
我写的就是另一种解法
作者: 13902480061    时间: 2016-10-15 20:49
还有一种方法从第三个字符到第七个字符开始取长度判断字节。本位长度减去前一位长度为偶数,说明有中文。实际上只要比较字节长度为678这三个就好了。

作者: fan0920    时间: 2016-10-15 22:41
如果有负数的话,怎么判断呢?
作者: GXM    时间: 2016-10-15 22:49
赞,要四个字节~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2