按照字符数截取字符串

来源:互联网 发布:雨血全剧情知乎 编辑:程序博客网 时间:2024/05/20 14:27

  /**
  * 得到一个字符串的长度,显示的长度,一个汉字或日韩文长度为2,英文字符长度为1
  *
  * @param String         s ,需要得到长度的字符串
  * @return int, 得到的字符串长度
  */
 public static int length(String s) {
  if (s == null)
   return 0;
  char[] c = s.toCharArray();
  int len = 0;
  for (int i = 0; i < c.length; i++) {
   len++;
   if (!isLetter(c[i])) {
    len++;
   }
  }
  return len;
 }

 

 /**
  * 截取一段字符的长度,不区分中英文,如果数字不正好,则少取一个字符位
  * 
  * @param String      origin, 原始字符串
  * @param int   len, 截取长度(一个汉字长度按2算的)* 
  *  @param String  拼在截取后的字符串的结尾,一般是"..."
  *  @return String, 返回的字符串
  */
 public static String substring(String origin, int len, String more) {
  if (origin == null || origin.equals("") || len < 1)
   return "";
  byte[] strByte = new byte[len];
  if (len > StringUtil.length(origin)) {
   return origin;
  }
  System.arraycopy(origin.getBytes(), 0, strByte, 0, len);
  int count = 0;
  for (int i = 0; i < len; i++) {
   int value = (int) strByte[i];
   if (value < 0) {
    count++;
   }
  }
  if (count % 2 != 0) {
   --len;
  }
  int n = count / 2;
  String retS = "";
  retS = origin.substring(0, len - n) + more;

  return retS;
 }

 

原创粉丝点击