📅  最后修改于: 2023-12-03 15:30:04.881000             🧑  作者: Mango
在 JavaScript 中,字符串是一个基本数据类型,我们可以使用它来存储和操作文本数据。在处理字符串时,经常需要计算字符串的长度,以便确认字符数目或截取子串等操作。本文将介绍如何计算字符串的长度,并给出一些实用技巧。
计算字符串的长度有多种方式,常见的有以下几种:
JavaScript 中的字符串有一个 length 属性,用于返回该字符串的长度,即其中字符的个数(注意,不是字节数)。
const str = 'Hello, world!';
console.log(str.length); // 13
我们可以使用 spread operator,在将字符串转化为数组的同时,获取其长度。
const str = 'Hello, world!';
const arr = [...str];
console.log(arr.length); // 13
我们也可以使用正则表达式来匹配字符串中的所有字符,并计算其个数(也不是字节数)。
const str = 'Hello, world!';
const match = str.match(/./g);
console.log(match.length); // 13
需要注意的是,字符串中可能包含 Unicode 字符,其长度可能不等于 1。此时,我们需要考虑使用 UnicodeAwareString 类来计算字符串长度。
UnicodeAwareString 是一个实现了 Unicode 规范的字符串,其 length 方法可以精确计算字符串的长度(字符个数),支持 Unicode 中的组合字符、替代字符序列、组合用重音符号等。
const {UnicodeAwareString} = require('@unicode-aware/string');
const str = new UnicodeAwareString('f\u0303oo');
console.log(str.length) // 3
获取字符串中的某一部分字符时,我们需要接触到截取子串的操作。JavaScript 提供了多种方法用于获取字符串中某一部分字符,常见的有以下几种:
charAt 方法用于获取字符串中指定位置的字符,其参数为字符索引,返回值是该索引位置上的字符。
const str = 'Hello, world!';
console.log(str.charAt(0)); // 'H'
console.log(str.charAt(7)); // 'w'
需要注意的是,如果索引位置超出字符串长度,charAt 方法返回一个空字符串。
substring 方法用于从字符串中截取子串,其参数为起始字符的索引和结束字符的索引(不包括结束位置字符),返回值是被截取的子串。
const str = 'Hello, world!';
console.log(str.substring(0, 5)); // 'Hello'
console.log(str.substring(7)); // 'world!'
需要注意的是,如果参数是负数,则被视为 0。
slice 方法用于从字符串中截取子串,其参数为起始字符的索引和结束字符的索引(不包括结束位置字符),返回值是被截取的子串。
const str = 'Hello, world!';
console.log(str.slice(0, 5)); // 'Hello'
console.log(str.slice(7)); // 'world!'
slice 方法与 substring 方法相似,但不支持负数索引。如果参数是负数,则表示从字符串末尾开始计数。
substr 方法用于从字符串中截取子串,其参数为起始字符的索引和截取长度,返回值是被截取的子串。
const str = 'Hello, world!';
console.log(str.substr(0, 5)); // 'Hello'
console.log(str.substr(7)); // 'world!'
需要注意的是,如果第二个参数是负数,则被视为 0。如果第一个参数是负数,则表示从字符串末尾开始计数。
通过本文的介绍,我们学习了如何计算 JavaScript 字符串的长度,并了解了 Unicode 规范中的字符串长度计算方法。同时,我们也学习了如何获取字符串中的子串或字符,包括 charAt、substring、slice 和 substr 方法。希望对您的开发工作有所帮助!