如何用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

回到顶部