JavaScript 字符串 codePointAt() 方法

JavaScript codePointAt() 语法

codePointAt() 是 JavaScript 字符串的一个方法,它用于获取字符串中 “指定下标” 字符对应的 Unicode 值。

charCodeAt() 不同,codePointAt() 能够正确处理 Unicode 编码点大于 “0xFFFF” 的字符。

语法:

str.codePointAt(index)

说明:

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

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

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

提示: 在实际开发中,推荐优先使用 codePointAt(),而不是 charCodeAt()。

JavaScript codePointAt() 摘要

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

JavaScript codePointAt() 示例

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

示例 1:codePointAt() 基本用法

const str = "ABC";

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

运行结果如下。

65
66
67

示例 2:codePointAt() 不带参数

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

运行结果如下。

65

分析:

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

示例 3:字符串是中文

const str = "绿叶网";

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

运行结果如下。

32511
21494
32593

codePointAt() 与 charCodeAt() 的区别

codePointAt() 与 charCodeAt() 这两个方法的作用是一样的,都是获取字符串中指定下标字符对应的 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() 却可以正确转换。

codePointAt() 与 string.fromCodePoint()

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

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

上一篇: charCodeAt()

下一篇: slice()

给站长反馈

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

邮箱:lvyenet@vip.qq.com

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