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 值转换成字符。

上一篇:

下一篇:

给站长反馈

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

邮箱:lvyenet@vip.qq.com

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