首页 > 其他分享 >js substr方法截取截断emoji图标问题

js substr方法截取截断emoji图标问题

时间:2023-06-19 17:34:45浏览次数:37  
标签:start js substr result str var emojiFlag charCode emoji

function safeSubstring(str, start, length) {
var end = start + length;
var result = "";
var emojiFlag = false;
for (var i = start; i < end; i++) {
var charCode = str.charCodeAt(i);
if (charCode >= 0xd800 && charCode <= 0xdbff) {
// 处理高位代理项
emojiFlag = true;
} else if (charCode >= 0xdc00 && charCode <= 0xdfff) {
// 处理低位代理项
emojiFlag = false;
}
result += String.fromCharCode(charCode);
}
if (emojiFlag) {
// 如果最后一个字符是高位代理项,则需要再次截取一个字符
result = safeSubstring(str, start, length + 1);
}
return result;
}

使用方法示例:

var str = "Hello 

标签:start,js,substr,result,str,var,emojiFlag,charCode,emoji
From: https://www.cnblogs.com/zerofan/p/17491684.html

相关文章

  • node.js安装与卸载
    一、安装:官网安装 Node.js(nodejs.org)Node安装C盘与其他盘区别,安装哪个最好!-主要区别在于权限 区别是C盘属于管理员权限,其他盘属于用户权限Node安装C盘时npminstall包cmd以管理员身份运行,必须需要管理员Node安装其他盘时,不是C盘npminstall包需要普通用户权限就可......
  • 利用react-json-view最JSON数据进行渲染
    1.安装npminstall--savereact-json-view2.使用importReactJsonfrom"react-json-view";constA=()=>{letsrc={"content-length":"675","x-b3-parentspanid":"06c634eea567252a",&quo......
  • StencilJs学习之组件装饰器
    stenciljs可以方便的构建交互式组件支持以下装饰器componentstatepropwatchmethodelementeventlistenComponent装饰器@Component是一个装饰器,它将TypeScript类指定为Stencil组件。每个模板组件在构建时都会转换为Webcomponent。import{Component}from......
  • Mongodb 为什么提起处理JSON 就是MOGNODB 的,因为我没得选
    提到JSON的数据处理,大部分人想到的一定是MONGODB,如果不是可以自己好好的反思一下,自己的数据库餐盘是不是缺少MOGNODB这道硬菜,最近也有人问我一个问题,关于使用mongodb的原因是什么,我回答的比较简单,但是我更原因用这样的方式来回答这个问题。提到MOGNODB的特长,必须提到JSON,在数......
  • Js_最常用的55个经典技巧
     1.οncοntextmenu="window.event.returnValue=false"将彻底屏蔽鼠标右键<tableborderοncοntextmenu=return(false)><td>no</table>可用于Table2.<bodyonselectstart="returnfalse">取消选取、防止复制3.οnpaste="returnfalse"......
  • (六)模板字符串、JS中的数据
    一、模板字符串 二、JS中的数据 ......
  • Turndown 源码分析:二、规则`commonmark-ruiles.js` REV1
    import{repeat}from'./utilities'varrules={}//段落rules.paragraph={filter:'p',replacement:function(content){//前后加两个换行return'\n\n'+content+'\n\n'}}//换行rules.lineBrea......
  • JavaScript的数学计算库:decimal.js
    Anarbitrary-precisionDecimaltypeforJavaScript.功能整数和浮点数简单但功能齐全的API复制JavaScript和对象的许多方法Number.prototypeMath还处理十六进制、二进制和八进制值比Java的BigDecimalJavaScript版本更快,更小,也许更容易使用无依赖关系广泛的平......
  • js递归简易深拷贝
    letobj={a:1,b:{b1:1,b2:2},c:[1,2,3]}functiondeepClone(obj){letresult=Array.isArray(obj)?[]:{}for(letkeyinobj){if(obj.hasOwnProperty(key)){if(obj[key]&&typeofobj[key]==&......
  • (二)JS数据类型、数据类型检测、数据类型转换、运算符、操作网页元素
    一、数据类型【JS的基本数据类型有哪些?基本数据类型和引用数据类型的区别】  二、数据类型检测 三、数据类型转换【隐式转换、强制转换】  四、运算符  五、操作网页元素 ......