首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >不拆分表情符号的JavaScript子串

不拆分表情符号的JavaScript子串
EN

Stack Overflow用户
提问于 2018-09-27 06:13:55
回答 2查看 2.5K关注 0票数 12

在我的js中,我正在尝试substring()文本,这通常可以工作,但不幸的是斩首表情符号。

代码语言:javascript
复制
usaText = "AZ"
splitText = usaText.substring(0,2) //"A�"
splitText = usaText.substring(0,3) //"A"
splitText = usaText.substring(0,4) //"A�"
splitText = usaText.substring(0,5) //"A"

有没有在不破坏表情符号的情况下使用子字符串的方法?在我的生产代码中,我减少了大约40个字符,我不介意它是35个还是45个。我曾想过简单地检查第40个字符是数字还是介于a-z之间,但如果你收到一整篇充满表情符号的文本,这将不起作用。我可以通过模式匹配来检查最后一个字符是否是“结束”表情符号的字符,但这在性能方面似乎也有点奇怪。

我是不是遗漏了什么?鉴于JavaScript的庞大功能,难道没有内置的count可以将表情符号视为一种表情符号吗?

关于Split JavaScript string into array of codepoints? (taking into account "surrogate pairs" but not "grapheme clusters")的事情:

代码语言:javascript
复制
chrs = Array.from( usaText )
(4) ["A", "", "", "Z"]
0: "A"
1: ""
2: ""
3: "Z"
length: 4

不幸的是,这太多了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-27 07:25:04

所以这并不是一件容易的事情,我倾向于告诉你,你不应该自己写这篇文章。你应该使用像runes这样的库。

只是一个简单的npm i runes,然后:

代码语言:javascript
复制
const runes = require('runes');
const usaText = "AZ";
runes.substr(usaText, 0, 2); // "A"
票数 11
EN

Stack Overflow用户

发布于 2020-04-24 22:39:49

这段代码对我来说很有效:

代码语言:javascript
复制
splitText = Array.from(usaText).slice(0, 5).join('');
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52526719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档