对指定的含中文的字符串按指定的字节数截取,碰到半个汉字的时候,不截取此半个汉字。

时间:2022-03-22 10:12:41

以前都是写英文的系统,不用处理汉字,现在就碰到可能会截取汉字的情况,当然是要不能截取出乱码来,就是不能对整个汉字截取一半。如"我ABC汉字d"这个字符串,截取5个字节的时候,应该是"我ABC",而截取8个字节的时候,应该是"我ABC汉",而不应该是"我ABC汉?",其中"?"为半个汉字。

Java中的char类型是占两个字节的,因此一个char就可以存放一个中文字。程序实现起来也简单。

public class StringUtil{
 public static String cut(String str, int bytesCount){

  byte[] bytes = str.getBytes();
  char[] chars = new String(bytes, 0, bytesCount).toCharArray();
  char[] charsPlus = new String(bytes, 0, bytesCount + 1).toCharArray();

  if (chars.length == charsPlus.length)
   return new String(bytes, 0, bytesCount - 1);

     return new String(bytes, 0, bytesCount);
  
 }
 public static void main(String[] args){
  System.out.println(cut("我ABC汉字d", 8));
  System.out.println(cut("我ABC汉字d", 7));
  System.out.println(cut("我ABC汉字d", 6));
  System.out.println(cut("我ABC汉字d", 5));
  System.out.println(cut("我ABC汉字d", 4));
  System.out.println(cut("我ABC汉字d", 3));
  System.out.println(cut("我ABC汉字d", 2));
  System.out.println(cut("我ABC汉字d", 1));
 }
}

 

 

引用自:
http://xojcafe.blogchina.com/592132.html