有一种方法可以从单个角色获取charCode吗?

时间:2016-02-22 18:40:19

标签: javascript string char ecmascript-6

我喜欢函数String.prototype.charCodeAt,但它要求你考虑一个String情况并提供一个索引参数。我知道Ecmascript不处理单个字符,但是有任何 native 方法可以直接从一个字符获取charCode吗?像str[0].charCode()或任何考虑1长度字符串的东西?

3 个答案:

答案 0 :(得分:1)

  

是否有任何本地方法直接从一个角色获取charCode?

没有。正如你所说,EcmaScript并没有专门处理“一个字符”的事情。

如果你需要处理单个字符,你可以直接将它们存储为数值,只有当它们有序列时才将它们转换为字符串。

  

str[0].charCode()

这样的东西

嗯,看起来你真的想在这里使用str.charCodeAt(0)

答案 1 :(得分:1)

您应首先定义您的案例中charCode的含义。 JS使用UTF-16编码的字符串,因此charCodeAt是该位置的UTF-16代码单元的值。最初,JS使用了charCodeAt()具有完美意义的UCS2子集。完全不支持编码为UTF-16的完整UCS4支持。

从字符串获取真正的UNICODE代码点(是你的charCode吗?)的唯一方法是使用ES6及其字符串枚举功能:

for (let ch of str) { ch here is real UNICODE code point }

注意,上面的迭代次数可能比str.length少。

然后检查String.prototype.codePointAt()

答案 2 :(得分:0)

String.prototype.charCode = function(){
    return this.charCodeAt(0).toString(16);
}
那么你可以做到 str[0].charCode();