我想在JavaScipt字符串中使用‌
,
,°
和℃
,但这不起作用:
const str = `‌ ° ℃`;
如果我执行console.log(str)
,我希望看到类似这样的内容(请注意,‌
将不可见,而
只会看起来像是常规空格):
° ℃
我见过this other question,建议的解决方案是将这些实体更改为十六进制等效项,但这是不可能的,因为此字符串来自后端,并且这些实体已经存在。
即使HTML实体已经以某种方式存在于该字符串中,也需要用其实际字符或等效的escape notation替换它们。
如果它们已经不在字符串中,一种选择就是只查找它们:
‌
-ZERO WIDTH NON-JOINER
:ZERO WIDTH NON-JOINER
。0x200C
-
:NO-BREAK SPACE
。或计算它们:
NO-BREAK SPACE
-0x00A0
:°
(十进制DEGREE SIGN (°)
是十六进制DEGREE SIGN (°)
)。0x00B0
-176
:b0
(十进制℃
是十六进制DEGREE CELSIUS (℃)
)。或者,如果您可以从其他地方键入或复制粘贴原始字符,则可以使用DEGREE CELSIUS (℃)
获取其十进制Unicode代码,该代码将以给定索引返回UTF-16十进制代码单位,以及0x2103
,使用其8451
参数将该十进制转换为十六进制:
2103
然后使用String.prototype.charCodeAt()
用其Unicode代码表示它们。请注意,根据代码,我们使用String.prototype.charCodeAt()
或Number.prototype.toString()
表示法:
Number.prototype.toString()
在您的情况下,您需要解析该字符串,提取实体并将其替换为它们代表的实际字符。
我制作了此代码段,以便您可以粘贴字符或编写HTML实体并获取其Unicode代码,但这也将为您提供有关如何动态解析这些HTML实体的示例: