如何在JavaScript中获取字符串数组的字符串?
我在想一个像"Hello world!"
数组一样的字符串['H','e','l','l','o',' ','w','o','r','l','d','!']
我需要找出字符串中的字符是否是表情符号.
例如,我有这个角色:
let string = ""
let character = Array(string)[0]
Run Code Online (Sandbox Code Playgroud)
我需要弄清楚那个角色是不是表情符号.
(您需要Firefox或Safari才能在代码中看到表情符号.)
我想带一串表情符号并用个别角色做点什么.
在JavaScript中,"?".length == 13
因为"?"
长度为1,其余为2.所以我们做不到
s = string.split("");
c = [];
c[0] = s[0]+s[1];
Run Code Online (Sandbox Code Playgroud)
根据JavaScript - The Definitive指南,
JavaScript假定它正在解释的源代码已经规范化,并且不会尝试规范化标识符,字符串或正则表达式本身.
Unicode标准定义了所有字符的首选编码,并指定了将文本转换为适合比较的规范形式的规范化过程.
如果JS没有规范化Unicode,那么谁来做它以及什么时候?
如果JavaScript没有规范化Unicode,那么如何
"café" === "caf\u00e9" // => true
Run Code Online (Sandbox Code Playgroud)
为什么
"café" === "cafe\u0301" // => false
Run Code Online (Sandbox Code Playgroud)
由于两者(\u00e9
和e\u0301
)都是Unicode形成é的方式.
我有点问题
我正在使用NodeJS作为后端。现在,用户拥有一个“传记”字段,用户可以在其中写一些关于他自己的东西。
假设此字段的最大长度为220,并将其作为输入:
????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
如您所见,没有220个表情符号(有37个表情符号),但是如果我在nodejs服务器中这样做
console.log(bio.length)
Run Code Online (Sandbox Code Playgroud)
输入文本在何处,我得到221。如何“解析”字符串输入以获得正确的长度?关于Unicode是否有问题?
解决了
我使用了这个库:https : //github.com/orling/grapheme-splitter
我尝试过:
var Grapheme = require('grapheme-splitter');
var splitter = new Grapheme();
console.log(splitter.splitGraphemes(bio).length);
Run Code Online (Sandbox Code Playgroud)
长度为37。效果很好!