gpt4 book ai didi

javascript - 使用扩展语法从包含表情符号的字符串中过滤空字符串

转载 作者:行者123 更新时间:2023-11-30 15:12:04 25 4
gpt4 key购买 nike

我想保持时尚,所以我一直在玩 spread operator和表情符号。我注意到当我想 filter空字符串 ('') 从生成的“展开”数组中取出,空字符串不会被删除。这是为什么?

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

最佳答案

在你的字符串中有一个不可见的字符,它是一个 variation selector .如果您打印字符代码,您可以看到这一点:

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

如果您的目标是删除特定的 variation selector 15 , 那么你可以只使用 replace:

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

请注意表情符号在您的第三条语句的输出中略有不同。这是变体选择器的效果,您从前两个语句中的第一个字符中删除了它。虽然那个特殊字符本身不打印任何东西,并且在隔离时显示为空字符串,但它确实不是空的,因此 filter 不会排除它。

表情符号字符本身位于单个单词 UTF-16 范围之外,因此它们占用两个单词。

当您使用 split 拆分这样的单字符字符串时,您会得到两个单独的字符(JavaScript 的历史怪癖),它们代表 UTF 编码。如果您的目标是计算字符串中的表情符号(和其他高范围字符),您可以使用以下代码:

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

关于javascript - 使用扩展语法从包含表情符号的字符串中过滤空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44979260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com