A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

class Test10 {  
          
    public static void main(String[] args) {  
      
        String s1 = "HM程序员";  
  //调用函数,测试结果
        splitString(s1, 3);  
        splitString(s1, 4);  
        splitString(s1, 5);
        splitString(s1, 6);
        
    }  
  //定义一个函数,能实现从一个字符串中按字节数截取一部分,但不能截取出半个中文(GBK码表)
    public static void splitString(String src, int len) {  
      //定义一个数组bt从0角标到len-1中负数出现的个数
        int count=0;
      
  //如果字符串输出为空,输出输入为空
        if (null == src)  
            System.out.println("输入为空");  
           
         
  
      
        byte bt[] = src.getBytes(); // 将String转换成byte字节数组  
                int x=bt.length;//数组by的长度
        //如果截取的字节数大于bt的字节,输出为bt的最大字节       
        if (len > x)   
            len = x;  
          //判断截取字节的最后一位的值
        if (bt[len-1]> 0) {  
                //截取想要的字节
            String subStrx = new String(bt, 0, len);  
            System.out.println("subStrx==" + subStrx); }
            else  
            {
                    //如果截取的最后一个字节小于零,循环字节。并读取角标从零到len-1的负数个数
                     for (int y=0;y<len;y++)
                 {
                         if (bt[y]<0)
                                 count++;
                 }
               //如果截取字节数为偶数,打印输出结果
                if(count%2==0)
                {
                        String subStrx = new String(bt, 0, len);  
                    System.out.println("subStrx==" + subStrx);
                }
                //如果字节数为奇数打印输出结果
                else
                {
                        String subStrx = new String(bt, 0, len-1);  
                    System.out.println("subStrx==" + subStrx);
                }
            }
  
        
        
    }  
  
}  

1 个回复

倒序浏览
0...0//\\0..0
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马