当前位置: 首页 > news >正文

网站建设续费合同绍兴文理学院教务管理系统入口

网站建设续费合同,绍兴文理学院教务管理系统入口,与设计行业相关的网站,国内新闻热点事件Javascript如何截取含有表情的字符串 一、说说背景 社区社交应用中#xff0c;难免会有输入用户昵称的操作#xff0c;如果用户老老实实的输入中文汉字或者英文字母#xff0c;那当然没啥问题#xff0c;我们能够轻松的处理字符串的截取#xff0c;产品说按多少字符截取…Javascript如何截取含有表情的字符串 一、说说背景 社区社交应用中难免会有输入用户昵称的操作如果用户老老实实的输入中文汉字或者英文字母那当然没啥问题我们能够轻松的处理字符串的截取产品说按多少字符截取那我们就按多少字符截取那还有啥问题但这帮千奇百怪的人类当然不会好好输入昵称比如会输入带有特殊字符表情的昵称嘿嘿就是我这样的昵称比如这个昵称成者为王败者为寇。 看到这里难免有些好奇宝宝就会问了这又有什么问题呢 那先请问这个昵称有几个字符呢他的长度应该是多少呢截取这个字符的前8个字符该怎么做呢 善于思考的看客们应该开始动手了那还不简单看我字符lengthslice和substring substr大法运算一波 let nickName 成者为王败者为寇; let sliceName nickName.slice(0, 8); let substrName nickName.substr(0, 8) let substringName nickName.substring(0, 8) console.log(nickName.length,sliceName, substrName, substringName);// 11 成者为王败者\uD83D 成者为王败者\uD83D 成者为王败者\uD83D运行结果发现这个字符竟然是11个长度这个嘿嘿竟然占了两个字符长度而且我们常规的截取方案竟然出现了乱码。 为了再次验证我们直接打印位置7和位置8看看结果 nickName[7] \uD83D nickName[8] \uDE01console.log(\uD83D\uDE01) // 嘿嘿果然是你。 JavaScript 内部字符以 UTF-16 的格式储存每个字符固定为2个字节。对于那些需要4个字节储存的字符Unicode 码点大于0xFFFF的字符JavaScript 会认为它们是两个字符。 二、谈谈方案 2.1 Array.from方法 Array.from() 方法对一个类似数组或可迭代对象创建一个新的浅拷贝的数组实例。用大实话说就是能够将雷数组转换为真实数组比如将NodeListargumentsStringSetMap等转换为数组. console.log(Array.from(foo)); // Expected output: Array [f, o, o]console.log(Array.from([1, 2, 3], x x x)); // Expected output: Array [2, 4, 6] 试试这种方案吧 let names Array.from(成者为王败者为寇); let name names.slice(0, 8).join(); console.log(name);// 成者为王败者 使用Array.from把nickName转换后可以看到转换成一个真实的数组了嘿嘿特殊字符字符占了数组中的一个位置然后按照数组中的方法截取再进行拼接即可 2.2 String.prototype.codePointAt()方法 codePointAt() 方法返回 一个 Unicode 编码点值的非负整数。返回值是在字符串中的给定索引的编码单元体现的数字如果在索引处没找到元素则返回 undefined 。 ABC.codePointAt(1); // 66 \uD800\uDC00.codePointAt(0); // 65536 \uD800\uDC00.codePointAt(1); // 56320XYZ.codePointAt(42); // undefined 在ES6之前 JS 的字符串以 16 位字符编码(UTF-16)为基础。每个 16 位序列(相当于2个字节)是一个编码单元(code unit)可简称为码元用于表示一个字符。字符串所有的属性与方法(如length属性与charAt() 方法等)都是基于16位序列。 比如length方法、nickname[2]、split、length、slice和substring、substr方法等操作都会产生异常。为此在ES6中加强了对 Unicode 的支持并且扩展了字符串对象。 对于 Unicode 码点大于0xFFFF的字符是使用4个字节进行存储。ES6 提供了codePointAt方法能够正确处理 4 个字节储存的字符返回一个字符的码点。 console.log(.codePointAt(0).toString(16)); // 1f601// 输出码点对应的字符 \u{1f601}; // 请注意 在之前Unicode编码均在[\u000-\uFFFF]之间因此可以使用类似\u0047这样的编码但是现在码点超过\uFFFF的界限若再这样使用则获取不到对应的字符。因此在ES6中码点的字符放在中括号内类似上面的格式所有的码点均可以使用这种格式 \u{1f601}那么就容易了判断需要截取的位置是否正好是4字节的字符如果是则延长一位截取否则正常截取 function truncated(str, num){let index Array.from(str)[num-1].codePointAt(0) 0xFFFF ? num1 : num;return str.slice(0, index); } let nickname 成者为王败者为寇; truncated(nickname, 8); // 成者为王败者 虽然上面使用了slice但是也使用了我们方案一种的Array.from有点多此一举的感觉。 2.3 for-of for…of语句在可迭代对象包括 ArrayMapSetStringTypedArrayarguments 对象等等上创建一个迭代循环调用自定义迭代钩子并为每个不同属性的值执行语句 let iterable [10, 20, 30];for (const value of iterable) {console.log(value); } // 10 // 20 // 30let iterable boo; for (let value of iterable) {console.log(value); } // b // o // o 就是因为for-of能够迭代String这一特性因此我们能够用来去做截取字符串的操作 let nickname 成者为王败者为寇; for (let name of nickname) {console.log(name); } // 成 // 者 // 为 // 王 // // 败 // 者 // // 为 // 寇封装后我们就可以进行使用了 function truncated(str, num){let s ;for(let v of str){s v;num--;if(num0){break;}}return s; } truncated(成者为王败者为寇, 8); // 成者为王败者三、总结 总结了三种方案通过遍历和检查都是去判断字符的完整性但是可能还会有很多其他考虑不到的方案有想法的小伙伴可以分享分享。 四、引用参考 Array.from https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/from String.prototype.codePointAt() https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/codePointAt for…of https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/for…of
文章转载自:
http://www.morning.pngph.cn.gov.cn.pngph.cn
http://www.morning.sqfrg.cn.gov.cn.sqfrg.cn
http://www.morning.kqpsj.cn.gov.cn.kqpsj.cn
http://www.morning.gpfuxiu.cn.gov.cn.gpfuxiu.cn
http://www.morning.zlwg.cn.gov.cn.zlwg.cn
http://www.morning.ykrkq.cn.gov.cn.ykrkq.cn
http://www.morning.bwjgb.cn.gov.cn.bwjgb.cn
http://www.morning.nfpgc.cn.gov.cn.nfpgc.cn
http://www.morning.ygqhd.cn.gov.cn.ygqhd.cn
http://www.morning.dshkp.cn.gov.cn.dshkp.cn
http://www.morning.krgjc.cn.gov.cn.krgjc.cn
http://www.morning.wyjhq.cn.gov.cn.wyjhq.cn
http://www.morning.kxrhj.cn.gov.cn.kxrhj.cn
http://www.morning.rsxw.cn.gov.cn.rsxw.cn
http://www.morning.qgghr.cn.gov.cn.qgghr.cn
http://www.morning.rxcqt.cn.gov.cn.rxcqt.cn
http://www.morning.rgyts.cn.gov.cn.rgyts.cn
http://www.morning.fkffr.cn.gov.cn.fkffr.cn
http://www.morning.mdjzydr.com.gov.cn.mdjzydr.com
http://www.morning.crkhd.cn.gov.cn.crkhd.cn
http://www.morning.hkcjx.cn.gov.cn.hkcjx.cn
http://www.morning.bkppb.cn.gov.cn.bkppb.cn
http://www.morning.lxyyp.cn.gov.cn.lxyyp.cn
http://www.morning.bqts.cn.gov.cn.bqts.cn
http://www.morning.bwgrd.cn.gov.cn.bwgrd.cn
http://www.morning.kaoshou.net.gov.cn.kaoshou.net
http://www.morning.ksgjn.cn.gov.cn.ksgjn.cn
http://www.morning.ywtbk.cn.gov.cn.ywtbk.cn
http://www.morning.pbgnx.cn.gov.cn.pbgnx.cn
http://www.morning.fpyll.cn.gov.cn.fpyll.cn
http://www.morning.nnhfz.cn.gov.cn.nnhfz.cn
http://www.morning.ljhnn.cn.gov.cn.ljhnn.cn
http://www.morning.rtqyy.cn.gov.cn.rtqyy.cn
http://www.morning.hrgxk.cn.gov.cn.hrgxk.cn
http://www.morning.smjyk.cn.gov.cn.smjyk.cn
http://www.morning.nbmyg.cn.gov.cn.nbmyg.cn
http://www.morning.thrtt.cn.gov.cn.thrtt.cn
http://www.morning.yrbq.cn.gov.cn.yrbq.cn
http://www.morning.rykmf.cn.gov.cn.rykmf.cn
http://www.morning.trtdg.cn.gov.cn.trtdg.cn
http://www.morning.yksf.cn.gov.cn.yksf.cn
http://www.morning.rnxs.cn.gov.cn.rnxs.cn
http://www.morning.yszrk.cn.gov.cn.yszrk.cn
http://www.morning.cthrb.cn.gov.cn.cthrb.cn
http://www.morning.qlsyf.cn.gov.cn.qlsyf.cn
http://www.morning.njntp.cn.gov.cn.njntp.cn
http://www.morning.qnxtz.cn.gov.cn.qnxtz.cn
http://www.morning.dbxss.cn.gov.cn.dbxss.cn
http://www.morning.qpqcq.cn.gov.cn.qpqcq.cn
http://www.morning.kpgbz.cn.gov.cn.kpgbz.cn
http://www.morning.dljujia.com.gov.cn.dljujia.com
http://www.morning.zxqqx.cn.gov.cn.zxqqx.cn
http://www.morning.tfgkq.cn.gov.cn.tfgkq.cn
http://www.morning.jfjqs.cn.gov.cn.jfjqs.cn
http://www.morning.rsmtx.cn.gov.cn.rsmtx.cn
http://www.morning.lhhdy.cn.gov.cn.lhhdy.cn
http://www.morning.qlbmc.cn.gov.cn.qlbmc.cn
http://www.morning.cbynh.cn.gov.cn.cbynh.cn
http://www.morning.wgcng.cn.gov.cn.wgcng.cn
http://www.morning.dgpxp.cn.gov.cn.dgpxp.cn
http://www.morning.gyfhk.cn.gov.cn.gyfhk.cn
http://www.morning.twdkt.cn.gov.cn.twdkt.cn
http://www.morning.zyytn.cn.gov.cn.zyytn.cn
http://www.morning.rgpbk.cn.gov.cn.rgpbk.cn
http://www.morning.qtfss.cn.gov.cn.qtfss.cn
http://www.morning.sacxbs.cn.gov.cn.sacxbs.cn
http://www.morning.mm27.cn.gov.cn.mm27.cn
http://www.morning.rcrnw.cn.gov.cn.rcrnw.cn
http://www.morning.jwqqd.cn.gov.cn.jwqqd.cn
http://www.morning.crtgd.cn.gov.cn.crtgd.cn
http://www.morning.rnlx.cn.gov.cn.rnlx.cn
http://www.morning.knqzd.cn.gov.cn.knqzd.cn
http://www.morning.mtgkq.cn.gov.cn.mtgkq.cn
http://www.morning.qkdcb.cn.gov.cn.qkdcb.cn
http://www.morning.dnjwm.cn.gov.cn.dnjwm.cn
http://www.morning.hfbtt.cn.gov.cn.hfbtt.cn
http://www.morning.qhln.cn.gov.cn.qhln.cn
http://www.morning.gbnsq.cn.gov.cn.gbnsq.cn
http://www.morning.zqcsj.cn.gov.cn.zqcsj.cn
http://www.morning.rtpw.cn.gov.cn.rtpw.cn
http://www.tj-hxxt.cn/news/279821.html

相关文章:

  • 最新网站查询郑州投资网站建设
  • 网站建设模板简单百度知道首页官网
  • 下载浙江平安建设信息系统网站律师做网络推广最好的网站有哪些
  • 常州网站建设基本流程wordpress咋样
  • 有域名 空间如何建网站购票网站模板
  • 做图兼职网站有哪些网站首页制作公司
  • 网站建设顾问英语wordpress模板首页是哪个文件
  • 三水建设网站做简单的网站首页
  • 浙江省建设科技推广中心网站企业网页设计模板素材
  • 做电影网站什么后果wordpress 拍卖主题
  • 企业培训机构排名厦门seo招聘
  • 摄影网站介绍国外画册设计网站
  • 网站优化方案基本流程石家庄网站建设找汉狮
  • 搜索引擎推广网站wordpress 经典案例
  • 做电影网站违法北京seo加盟
  • 简述网站建设的基本特征网页设计图片位置怎么设置
  • 电子商务网站开发费用入账生活中的电子商务有哪些
  • crm网站下载sanitize_user wordpress
  • 开源网站后台替代wordpress 搜索引擎
  • 网站建设整体情况介绍网页优化
  • ssh框架做的网站问题广州网站建设报价单
  • 网站建设与推广方案模板杭州做网站怎么收费
  • 建设网站八大员成绩查询大转盘网站程序
  • 找百度公司做网站怎么样网站建设的7种流程图
  • 雪白丰腴做美妇网站seo排名培训公司
  • 做外贸女装有哪些网站有哪些网站建设方案平台架构
  • 哪家做网站最好wordpress西部
  • 瑞安专业网站建设帝国网站网站手机版怎么做
  • 如何网站建设团队阿里巴巴1688官网网页版
  • 高端论坛网站建设电商哪个平台好