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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 素锦流年 中级黑马   /  2015-11-11 17:24  /  499 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

3 个回复

倒序浏览
最好是有程序能证明
回复 使用道具 举报
来取个经
回复 使用道具 举报
  1. //编写函数,从一个字符串中按字节数截取一部分,但不能截取出半个中文(GBK码表)
  2. public class Test {
  3.         public static void main(String[] args) throws Exception {
  4.                 String str = "HM程序员h";
  5.                 System.out.println(demo(str,7));
  6.         }
  7.         public static String demo(String str,int num) throws Exception{
  8.                 byte[] b = str.getBytes("GBK");
  9.                 if(num<=b.length){
  10.                         if(str.contains(new String(b,0,num))){        //因为GBK里面中文是2个字节,字母是1个字节,如果取出的正确的打字符串里肯定会包含(contians方法)该子串
  11.                                 //因为取出的有问题的话肯定不会包含改子串
  12.                                 return new String(b,0,num);        //没问题就直接返回截取的
  13.                         }
  14.                         else{
  15.                                 return new String(b,0,num-1);        //有问题的话就说明截取到半个中文了,然后减一个字节就好了
  16.                         }
  17.                 }
  18.                 return "";
  19.         }
  20. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马