【问题标题】:Unicode value in template literal for emoji [duplicate]表情符号模板文字中的 Unicode 值 [重复]
【发布时间】:2018-05-16 10:15:11
【问题描述】:

当我尝试使用字符串模板生成表情符号时出现错误。

如何达到这个目的?

Javascript 代码:

const unifiedValue = '1F60E';
const emoji = `\u{${ unifiedValue }}`;

Javascript 错误:

SyntaxError: 模板中的无效转义序列

当然,如果我直接使用该值,它会起作用,但这很容易出错 + 数千行代码和数百个 if 条件。

开发者控制台:

'\u{1F60E}'

控制台输出: “???”

【问题讨论】:

标签: javascript unicode emoji template-literals


【解决方案1】:

使用fromCodePoint 函数。

这是一个可行的解决方案

const unifiedValue = '1F60E';

var emoji = `0x${unifiedValue}`;
emoji = String.fromCodePoint(emoji);

console.log(emoji);

还请记住,我们“心爱的”Internet Explorer 不支持它:/

编辑

const unifiedValue = '1F60E';

var emoji = parseInt(unifiedValue, 16);

emoji = String.fromCodePoint(emoji);

console.log(emoji);

【讨论】:

  • 深受喜爱的 Internet Explorer 对我们来说并不重要 :) 这很好用!谢谢
  • 不要使用`0x${unifiedValue}`。只需使用parseInt(unifiedValue, 16)
  • @Bergi 好点,已编辑答案
  • @jackjop 查看已编辑的答案
【解决方案2】:

我认为这里的问题是您使用了模板引用。您必须在模板引号中使用双反斜杠。

const emoji = `\u{${ unifiedValue }}`;

不是这个

const emoji = `\\u{${ unifiedValue }}`;

【讨论】:

  • 但它返回字符串:\u{1F60E} 而不是表情符号
  • @KrzysztofJaniszewski 是对的,双引号会消除反冲并返回字符串 \u{1F60E},而不是 ?
猜你喜欢
  • 2021-10-02
  • 2016-10-22
  • 2016-12-31
  • 2019-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-06
  • 2017-05-27
相关资源
最近更新 更多