如何用JavaScript中的表情符号计算字符串的正确长度?
我有点问题
我正在使用NodeJS作为后端。现在,用户拥有一个“传记”字段,用户可以在其中写一些关于他自己的东西。
假设此字段的最大长度为220,并将其作为输入:
????????????????????????????????????????????????♀️????????????????????????????????????????♀️????????????????♀️????????????????♀️????????????????♀️????????????????♀️????????⚕️????????⚕️????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
如您所见,没有220个表情符号(有37个表情符号),但是如果我在nodejs服务器中这样做
console.log(bio.length)
输入文字在哪里,我得到221。如何“解析”字符串输入以获得正确的长度?关于Unicode是否有问题?
我使用了这个库:https :
//github.com/orling/grapheme-splitter
我尝试过:
var Grapheme = require('grapheme-splitter');var splitter = new Grapheme();
console.log(splitter.splitGraphemes(bio).length);
长度为37。效果很好!
回答:
str.length
给出UTF-16单位的数量。Unicode证明的以代码点(以字符为单位)获取字符串长度的方法是[...str].length
可迭代协议将字符串拆分为代码点。
也可以看看:
每个软件开发人员绝对,肯定必须了解的Unicode和字符集的绝对最低要求(无借口!)
每个JavaScript开发人员应该了解的Unicode知识
JavaScript存在Unicode问题
ES2015中支持Unicode的正则表达式
深度中的ES6字符串(和Unicode,❤)
以上是 如何用JavaScript中的表情符号计算字符串的正确长度? 的全部内容, 来源链接: utcz.com/qa/423259.html