js substr 根据字节长度截取字符串

js substr 根据字节长度截取字符串
此方法应该还可以被优化一下

/**
 * 根据字节长度截取字符串
 * @param str 字符串
 * @param bytesStart 字节截取起始位置
 * @param bytesLen 字节截取长度
 */
substrByBytes(str, bytesStart, bytesLen) {
  let bytes = 0 // 字节数
  let tmpStrLen = 0
  let finalStartIndex = 0; // 起始位置字符索引
  let finalLen: number; // 结束位置字符长度
  for (let i = 0; i < str.length; i++) {
    if (str.charCodeAt(i) > 255) {
      bytes += 2 // 中文字符增加2个字节
    } else {
      bytes += 1
    }
    if (bytes == bytesStart) {
      finalStartIndex = i + 1;
    }
    if (bytes == (bytesStart + bytesLen)) {
      tmpStrLen = i + 1;
    }

  }
  finalLen = tmpStrLen - finalStartIndex;
  return str.substr(finalStartIndex, finalLen);
}

 

posted @ 2024-03-21 13:49  夜微热  阅读(8)  评论(0编辑  收藏  举报