handleStr.js

/**
 * GBK字符串处理工具
 * @module handleStr
 */

/**
 * GBK长度计算函数
 * @param {string} str 源字符
 * @return {number} 字符串长度
 */
export function strLength(str) {
  if(!str) return 0
  var realLength = 0, len = str.length, charCode = -1;
  for (var i = 0; i < len; i++) {
    charCode = str.charCodeAt(i);
    if (charCode >= 0 && charCode <= 128) realLength += 1;
    else realLength += 2;
  }
  return realLength;
}

/**
 * GBK字符剪切函数
 * @param {string} str 源字符
 * @param {number} len 截取字符的GBK编码长度
 * @return {string} 截取的字符
 */
export function cutstr(str, len) {
  var str_length = 0;
  var str_len = 0;
  var str_cut = new String();
  str_len = str.length;
  for (var i = 0; i < str_len; i++) {
    let a = str.charAt(i);
    str_length++;
    if (escape(a).length > 4) {
      //中文字符的长度经编码之后大于4
      str_length++;
    }
    str_cut = str_cut.concat(a);
    if (str_length >= len) {
      // str_cut = str_cut.concat("...");
      return str_cut;
    }
  }
  //如果给定字符串小于指定长度,则返回源字符串;
  if (str_length < len) {
    return str;
  }
}