JavaScript 字符串 charCodeAt() 方法

JavaScript charCodeAt() 语法

charCodeAt() 是 JavaScript 字符串的一个方法,它用于获取字符串中 “指定下标” 字符对应的 Unicode 值(一个 0 到 65535 之间的整数)。

语法:

str.charCodeAt(index)

说明:

charCodeAt() 方法接收单个参数。

  • index(可选):表示字符的索引(下标),值从 0 开始,默认值为 0。也就是说,当 index 省略时,表示获取第 1 个字符。

参数 index 不能小于 0 或大于 str.length-1,否则会返回 NaN

提示:

  • charCodeAt() 方法与 charAt() 方法类似。不过 charAt() 返回的是字符本身,而 charCodeAt() 它返回的是字符对应的 Unicode 值。
  • 对于 Unicode 编码点大于 “0xFFFF” 的字符(例如一些 emoji 表情),charCodeAt() 可能无法正常获取。如果要获取完整的 Unicode 编码点,应该考虑使用 codePointAt() 方法。

JavaScript CharCodeAt() 摘要

属于 JavaScript String 对象
使用频率 极低
修改原字符串
官方文档 查看
MDN 查看

JavaScript charCodeAt() 示例

接下来,我们通过几个简单的例子来讲解一下 JavaScript charCodeAt() 方法是如何使用的。

示例 1:charCodeAt() 基本用法

const str = "ABC";

console.log(str.charCodeAt(0));
console.log(str.charCodeAt(1));
console.log(str.charCodeAt(2));

运行结果如下。

65
66
67

示例 2:charCodeAt() 不带参数

const str = "ABC";
console.log(str.charCodeAt());

运行结果如下。

65

分析:

当 charCodeAt() 不带参数时,表示获取的是第 1 个字符对应的 Unicode 值。也就是说,str.charCodeAt() 等价于 str.charCodeAt(0)。

示例 3:字符串是中文

const str = "绿叶网";

console.log(str.charCodeAt(0));
console.log(str.charCodeAt(1));
console.log(str.charCodeAt(2));

运行结果如下。

32511
21494
32593

charCodeAt() 与 codePointAt()

charCodeAt() 与 codePointAt() 这两个方法的作用是一样的,都是获取字符串中指定下标字符对应的 Unicode 值,不过它们还是有一定的区别。

  • charCodeAt():它是 ES1 的方法,它只能转换 Unicode 值不大于 “0xFFFF” 的字符。
  • codePointAt():它是 ES6 新推出的方法,它可以转换 Unicode 值大于 “0xFFFF” 的字符。

你可以将 codePointAt() 看成是 charCodeAt() 的 “增强版” 。在实际开发中,推荐优先使用 codePointAt()。

示例 4:Unicode 值小于等于 “0xFFFF”

const str = "ABC";

const result1 = str.charCodeAt(0);
console.log(result1);

const result2 = str.codePointAt(0);
console.log(result2);

运行结果如下。

65
65

分析:

对于 Unicode 值小于等于 0xFFFF 的字符,charCodeAt() 和 codePointAt() 都能正确识别。

示例 5:Unicode 值大于 “0xFFFF”

const str = "😁 😁 😁";

const result1 = str.charCodeAt(0);
console.log(result1);

const result2 = str.codePointAt(0);
console.log(result2);

运行结果如下。

55357
128513

分析:

“😁” (笑脸)的正确 Unicode 值为 “0x1f601” (即 128513),它已经大于 “0xFFFF” 。从结果看出来,charCodeAt() 无法正确转换它,而 codePointAt() 却可以正确转换。

charCodeAt() 与 string.fromCharCode()

charCodeAt() 与 string.fromCharCode() 这两个是相反操作,它们的区别如下。

  • charCodeAt():用于获取指定字符的 Unicode 值。
  • string.fromCharCode():用于将 Unicode 值转换成字符。

上一篇: charAt()

下一篇: codePointAt()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号