使用扩散语法从包含表情符号的字符串中筛选空字符串

原学程将引见应用分散语法从包括脸色标记的字符串中挑选空字符串的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

使用扩散语法从包含表情符号的字符串中筛选空字符串 教程 第1张

成绩描写

我试图坚持时兴,所以我一向在玩spread operator以及脸色包。我留意到,当我想要filter空字符串('')移出获得的"扩大"数组时,空字符串并出有被增除。为何会如许?

数据-lang="js"数据-隐蔽="假"数据-掌握台="真"数据-巴贝我="假">

console.log([...'😀︎']);  // ['😀︎', '']
console.log([...'😀︎'].filter(String));  // ['😀︎', '']
console.log(['😀︎', ''].filter(String)); // ['😀︎']

推举谜底

字符串中有1个弗成睹字符,它是variation selector。假如您挨印字符代码,您不妨瞅到:

数据-lang="js"数据-隐蔽="假"数据-掌握台="真"数据-巴贝我="假">

console.log([...'😀︎'].map(s => s.charCodeAt(0)));

假如您的目的是增除该特定variation selector 一五,则只需应用replace

s.replace(/ufe0e/g, '')

请留意,在第3个语句的输入中,脸色标记略有分歧。这是变体选择符的后果,您早年二个语句中的第1个字符中来失落了它。虽然该特别字符自己没有挨印所有实质,而且在断绝时显示为空字符串,但是它现实上没有是空的,是以filter没有会将其消除。

Emoji字符自己位于单个单词汇UTF⑴六规模以外,是以它们占用二个单词汇。

当您用split装分如许的单字符字符串时,您会获得二个零丁的字符(这是汗青上的1个奇异的JavaScript),它们代表UTF编码。假如您的目的是盘算字符串中的脸色标记(以及其余低规模字符),则不妨应用以下代码:

console.log(s.split('').length - [...s].length);

佳了闭于应用分散语法从包括脸色标记的字符串中挑选空字符串的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。