首页 > 其他分享 >js substr 根据字节长度截取字符串

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

时间:2024-03-21 13:55:57浏览次数:34  
标签:字节 截取 bytes js substr let str

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);
}

 

标签:字节,截取,bytes,js,substr,let,str
From: https://www.cnblogs.com/fubuki/p/18087233

相关文章

  • Vue.js+SpringBoot开发服装店库存管理系统
    目录一、摘要1.1项目介绍1.2项目录屏二、功能模块2.1数据中心模块2.2角色管理模块2.3服装档案模块2.4服装入库模块2.5服装出库模块三、系统设计3.1用例设计3.2数据库设计3.2.1角色表3.2.2服装档案表3.2.3服装入库表3.2.4服装出库表四、系统展示五、核......
  • Vue.js+SpringBoot开发高校宿舍调配管理系统
    目录一、摘要1.1项目介绍1.2项目录屏二、功能需求2.1学生端2.2宿管2.3老师端三、系统展示四、核心代码4.1查询单条个人习惯4.2查询我的室友4.3查询宿舍4.4查询指定性别全部宿舍4.5初次分配宿舍五、免责说明一、摘要1.1项目介绍基于JAVA+Vue+Spring......
  • pdf.js不显示签章
    原文链接:https://www.jianshu.com/p/d8f7348b3d2a解决pdf.js预览pdf不显示签名问题(两条路) 第一种方法:注释掉pdf.worker.js里的这三行代码://if(data.fieldType==="Sig"){//data.fieldValue=null;//this.setFlags(_util.AnnotationFlag.HIDDEN);//}一般情况下,注释......
  • html5&css&js代码 031 又一个计算器
    html5&css&js代码031又一个计算器一、代码二、解释又一个计算器页面。一、代码<!doctypehtml><htmllang="zh-cn"><head><metacharset="UTF-8"><title>计算器</title><style>body{......
  • Node.js躬行记(29)——基于Electron的开播助手
    公司其中一个主营业务是直播,目前主播直播会使用客户端开播,客户端中的用户有观众和主播两种身份。但客户端开播并不方便,例如音质没有PC的好,手机长时间直播发热,模拟器操作没有PC方便等。经过讨论,让我们组基于能跨平台的Electron开发PC客户端版本的开播助手,购......
  • Newtonsoft.Json/Json.NET忽略序列化时的意外错误
    在.NET中Newtonsoft.Json(Json.NET)是我们常用来进行Json序列化与反序列化的库。而在使用中常会遇到反序列化Json时,遇到不规则的Json数据解构而抛出异常。Newtonsoft.Json 支持序列化和反序列化过程中的错误处理。允许您捕获错误并选择是处理它并继续序列化,还是让错误冒泡并抛......
  • js实现页面滚动至指定位置
    实现思路:1、通过判断链接是否有某参数,来决定是否展示第二屏页面2、用offset来获取第二屏与文档顶部距离3、用scrollTop将滚动条滚动至第二屏位置if(location.href.indexOf('part')!=-1){$('html,body').animate({scrollTop:$('.bg2').offset().top},800);}一、offs......
  • 基于Java的桃花峪滑雪场租赁系统(Vue.js+SpringBoot)
    目录一、摘要1.1项目介绍1.2项目录屏二、功能模块2.1游客服务2.2雪场管理三、数据库设计3.1教练表3.2教练聘请表3.3押金规则表3.4器材表3.5滑雪场表3.7售票表3.8器材损坏表四、系统展示五、核心代码5.1查询教练5.2教练聘请5.3查询滑雪场5.4滑雪场预......
  • Three.js中加载和渲染3D Tiles
    1.引言3DTiles是3DGIS中常见的三维数据格式,能否用Three.js来加载渲染呢?肯定是可以,Three.js只是一个WebGL框架,渲染数据肯定可以,但是加载、解析数据得手动解决有没有一个第三方库解决这个问题呢?有,比如这个:NASA-AMMOS/3DTilesRendererJS:Rendererfor3DTilesinJavascrip......
  • JWT(JSON WEB TOKEN)是玩具吗
    JWT当然不是玩具,理解其设计意图,和适用场景自然会发现存在的就是有价值的JWT:JSONWebToken起源和定义JWT(JSONWebToken)是由IETF(InternetEngineeringTaskForce)基于RFC7519规范定义的。它是一种用于在网络应用间传递信息的标准方法。JWT最初由无状态的分布式应用场......