黑马程序员技术交流社区

标题: 如何截取整个中文? [打印本页]

作者: 素锦流年    时间: 2015-11-11 17:24
标题: 如何截取整个中文?
如何从一个字符串中按字节数截取一部分,但不能截取出半个中文(GBK码表),
例如:从“HM程序员”中截取2个字节是“HM”,截取4个则是“HM程”,
截取3个字节也要是"HM"而不要出现半个中文
作者: 素锦流年    时间: 2015-11-11 17:26
最好是有程序能证明
作者: 一个人走天下    时间: 2015-11-11 22:17
来取个经
作者: 黑夜中那颗星    时间: 2015-11-11 22:36
  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. }
复制代码





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