目录
7-1 通过指定开始和结束位置(slice, substring)从字符串中获取子串
7-2 通过指定起始位置和字符数(substr)从字符串中获取子字符串
7-3 获取字符串中指定位置的字符 (charAt)
7-4 获取字符串中指定位置字符的UTF-16字符编码(charCodeAt)
7-5 获取字符串中指定位置字符的 Unicode 代码点 (codePointAt)
7-6 从指定的 UTF-16 字符代码 (String.fromCharCode) 创建一个字符串
7-7 从指定的 Unicode 代码点创建字符串 (String.fromCodePoint)
7-8 将字符串中的大写字母转换为小写字母,将小写字母转换为大写字母 (toLowerCase, toUpperCase)
7-9 搜索是否包含指定的字符串,如果找到则返回位置 (indexOf, lastIndexOf)
7-10 搜索字符串是否包含指定字符串(includes)
7-11 判断字符串的开头或结尾是否为指定字符串(startsWith, endsWith)
7-12 从字符串的开头或结尾删除空格(trim、trimStart、trimEnd)
7-13 在字符串的开头或结尾添加指定长度的字符(padStart、padEnd)
String 对象的 slice 和 substring 方法采用给定开始和结束位置的子字符串。本节介绍如何使用 String 对象的 slice 和 substring 方法。
* 由于 slice 和 substring 方法的工作方式几乎相同,因此将它们放在一起解释。区别在于为索引指定负值时的行为和起始索引大于结束索引时的行为。
得到一个子串(切片)
String 对象的 slice 方法将目标字符串中指定位置的子字符串作为新字符串返回。格式如下。
string.slice(起始索引[, 结束索引])
返回一个新字符串,它是目标字符串从起始索引到结束索引的子字符串。如果省略结束索引,则会到达字符串的末尾。目标字符串不变。
字符串中第一个字符的索引为 0,第二个字符为 1。从起始索引指定的字符到结束索引指定的字符之前的字符作为子字符串获取子字符串。下面是起始索引为 1,结束索引为 3 的情况。
看看下面的示例。
let address = '山东省青岛市市南区';
let sub;
sub = address.slice(3, 5);
console.log(sub);
>> 青岛
sub = address.slice(3);
console.log(sub);
>> 青岛市市南区
如果您指定起始索引为 3,结束索引为 5,您将获得从索引 3 到 4 的子字符串。如果您指定起始索引为 3 并省略结束索引,您将获得从索引 3 到字符串末尾的子字符串。
指定负索引值
可以为开始索引和结束索引指定负值。最后一个字符是 -1,最后一个字符是 -2。
看看下面的示例。
let address = '山东省青岛市';
let sub;
sub = address.slice(-3, -1);
console.log(sub);
>> 青岛
sub = address.slice(-5, 5);
console.log(sub);
>> 东省青岛市
如果您指定起始索引为 -3 和结束索引为 -1,您将获得从索引 -3 到 -2 的子字符串。您还可以指定正负索引的混合。
如果结束索引等于或小于起始索引
slice 方法从起始索引指示的位置处的字符到结束索引指示的位置之前的字符获取子字符串。如果结束索引小于或等于起始索引,则子字符串为空字符串。
看看下面的示例。
let address = '山东省青岛市';
let sub;
sub = address.slice(3, 4);
console.log(sub);
>> 青
sub = address.slice(3, 3);
console.log(sub);
>> (空字符串)
sub = address.slice(3, 2);
console.log(sub);
>> (空字符串)
如果结束索引和起始索引相同,或者结束索引小于起始索引,则 slice 方法返回一个空字符串。
获取子串(substring)
String对象的substring方法将目标字符串中指定位置的子字符串作为新字符串返回。格式如下。
字符串.substring(起始索引[, 结束索引])
返回一个新字符串,它是目标字符串从起始索引到结束索引的子字符串。如果省略结束索引,则会到达字符串的末尾。目标字符串不变。
字符串中第一个字符的索引为 0,第二个字符为 1。从起始索引指定的字符到结束索引指定的字符之前的字符作为子字符串获取子字符串。下面是起始索引为 1,结束索引为 3 的情况。
看看下面的示例。
let address = 'JavaScript';
let sub;
sub = address.substring(4, 7);
console.log(sub);
>> Scr
sub = address.substring(4);
console.log(sub);
>> Script
如果您指定起始索引为 4,结束索引为 7,您将获得从索引 4 到 6 的子字符串。如果您指定起始索引为 4 并省略结束索引,您将获得从索引 4 到字符串末尾的子字符串。
如何指定索引
如果您为索引指定一个负值,它将被视为您指定了 0。此外,如果您指定的索引超过字符串中的字符数,则假定指定了与字符数相同的索引(索引从 0 开始,因此结果包括最后一个字符)。
看看下面的示例。
let address = 'JavaScript';
let sub;
sub = address.substring(-3, 4);
console.log(sub);
>> Java
sub = address.substring(4, 15);
console.log(sub);
>> Script
如果您指定起始索引为 -3 且结束索引为 4,您将获得从索引 0 到 3 的子字符串。此外,如果指定起始索引为 4,结束索引为 15,则目标字符数为 10,因此结束索引假定为 10。
如果结束索引小于起始索引
如果结束索引小于或等于起始索引,则交换起始索引和结束索引以获得子字符串。看看下面的示例。
let address = 'JavaScript';
let sub;
sub = address.substring(3, 3);
console.log(sub);
>> (空字符串)
sub = address.substring(6, 3);
console.log(sub);
>> aSc
如果结束索引和起始索引相同,则返回空字符串。或者,如果结束索引小于起始索引,则交换并获取子字符串。
String 对象实例方法 substr 检索给定起始位置和字符数的子字符串。在这里,我将解释如何使用 String 对象的 substr 方法。
获取子字符串 (substr)
String 对象的 substr 方法在给定目标字符串中的起始位置和字符数的情况下检索子字符串。格式如下。
字符串.substring(起始索引[, 字符数])
返回一个新字符串,它是一个子字符串,等于从目标字符串的起始索引开始的字符数。如果省略字符数,它将获取字符串的末尾。目标字符串不变。
字符串中第一个字符的索引为 0,第二个字符为 1。下面是起始索引为 1,字符数为 2 的情况。
看看下面的示例。
let address = '山东省青岛市';
let sub;
sub = address.substr(4, 2);
console.log(sub);
>> 岛市
sub = address.substr(3);
console.log(sub);
>> 青岛市
如果您指定起始索引为 4,字符数为 2,您将获得从索引 4 开始的 2 个字符的子字符串。如果您指定起始索引为 3 并省略字符数,您将获得从索引 3 到字符串末尾的子字符串。
指定负索引值
可以为起始索引指定负值。最后一个字符是 -1,最后一个字符是 -2。
看看下面的示例。
let address = '山东省青岛市';
let sub;
sub = address.substr(-3, 2);
console.log(sub);
>>省青
sub = address.substr(-4);
console.log(sub);
>> 省青岛市
如果您指定起始索引 -3 和字符数 2,您将获得从索引 -3 开始的 2 个字符的子字符串。如果您指定起始索引为 -4 并省略字符数,您将获得从索引 -4 到字符串末尾的子字符串。
为字符数指定 0 或负值
如果您为字符数指定 0 或负值,您将得到一个包含 0 个字符的子字符串,因此在这两种情况下都将返回一个空字符串。
看看下面的示例。
let address = '山东省青岛市';
let sub;
sub = address.substr(3, 0);
console.log(sub);
>> (空字符串)
sub = address.substr(5, -2);
console.log(sub);
>> (空字符串)
两者都返回空字符串,因为字符数为 0 或负值。
charAt 是 String 对象的实例方法,用于检索字符串中指定位置的字符。本节介绍如何使用 String 对象的 charAt 方法。
获取指定位置的字符(charAt)
String 对象的 charAt 方法检索目标字符串中指定索引处的字符。格式如下。
文字列.charAt(索引)
返回索引指定位置的字符作为返回值。字符串中第一个字符的索引为 0,第二个字符为 1。如果您指定的索引超出范围,则返回一个空字符串。
看看下面的示例。
let word = '青岛市';
console.log(word.charAt(0));
>> 青
console.log(word.charAt(2));
>> 市
console.log(word.charAt(4));
>> (空字符串)
我通过分别指定 0 、 2 和 4 作为索引来获取字符。索引 4 超出了字符串的范围,因此我们得到一个空字符串。
String对象的实例方法charCodeAt获取字符串中指定位置字符的UTF-16字符编码。本节介绍如何使用 String 对象的 charCodeAt 方法。
获取指定位置的UTF-16字符编码(charCodeAt)
String 对象的 charCodeAt 方法检索目标字符串中指定索引处字符的 UTF-16 字符代码。格式如下。
文字列.charCodeAt(索引)
返回索引位置字符的 UTF-16 字符代码。字符串中第一个字符的索引为 0,第二个字符为 1。如果您指定的索引超出范围,则返回 NaN。
UTF-16 字符代码返回 0x0000 和 0xFFFF(0 到 65535)之间的数字。对于由代理项对表示的字符,返回第一个字符代码的 0xD800 到 0xDBFF(55296 到 56319)之间的数字和第二个字符代码的 0xDC00 到 0xDFFF(56320 到 57343)之间的数字。(对于代理对,请参阅 什么是 JavaScript 中的代理对?)。
看看下面的示例。
let word = '山东省青岛市';
console.log(word.charCodeAt(0));
>> 23665
console.log(word.charCodeAt(2));
>> 30465
console.log(word.charCodeAt(9));
>> NaN
我通过分别指定 0 、 2 和 9作为索引来获取字符。我们在索引 9 处得到 NaN,因为它超出了字符串的范围。
对于代理对表示的字符:
let word = '😉';
console.log(word.charCodeAt(0));
>> 55357
console.log(word.charCodeAt(1));
>> 56841
代理对表示的字符使用一个字符的两个字符代码来表示。
String 对象实例方法 codePointAt 检索字符串中指定位置的字符的 Unicode 代码点。本节介绍如何使用 String 对象的 codePointAt 方法。
※ 使用charCodeAt方法获取UTF-16字符编码
获取指定位置的 Unicode 代码点 (codePointAt)
String 对象的 codePointAt 方法检索目标字符串中指定索引处字符的 Unicode 代码点。格式如下。
文字列.codePointAt(索引)
返回索引位置字符的 Unicode 代码点。字符串中第一个字符的索引为 0,第二个字符为 1。如果您指定的索引超出范围,则返回未定义。
Unicode 代码点返回 0x0000 和 0x10FFFF(0 到 1114111)之间的数字。由代理对表示的字符在 Unicode 代码点中也由单个代码点表示。对于不是代理对的字符,UTF-16 字符代码和 Unicode 代码点具有相同的值。
看看下面的示例。
let word = '山东省青岛市';
console.log(word.codePointAt(0));
>> 23665
console.log(word.codePointAt(2));
>> 30465
console.log(word.codePointAt(9));
>> undefined
インデックスに 0 、 2 、 9をそれぞれ指定して文字を取得しています。インデックスの 9 は文字列の範囲外なので undefined を取得しています。
对于由代理对表示的字符:
let word = '😉';
console.log(word.charCodeAt(0));
>> 55357
console.log(word.charCodeAt(1));
>> 56841
对于代理对表示的字符,只有第一个 Unicode 码位可以表示该字符。(在内部它以 UTF-16 存储,因此在较低的代理部分调用 codePointAt 方法似乎获得与 UTF-16 字符代码相同的值)。
String 对象的静态方法 String.fromCharCode 从指定的 UTF-16 字符代码创建一个字符串。这里我们解释一下如何使用String对象的String.fromCharCode方法。
从 UTF-16 字符代码 (fromCharCode) 创建一个字符串
String 对象的 fromCharCode 方法根据参数中指定的 UTF-16 字符代码创建并返回一个字符串。格式如下。
String.fromCharCode(字符码[, ...[, 字符码]])
创建并返回一个字符串,该字符串由与参数中指定的 UTF-16 字符代码相对应的字符组成。UTF-16 字符代码是介于 0x0000 和 0xFFFF(0 到 65535)之间的数字。如果字符代码超过 0xFFFF,它将被截断。
看看下面的示例。
console.log (String.fromCharCode(23665, 19996, 30465));
>> 山东省
对应于’山’、’东’和’省’的三个UTF-16字符代码被指定为参数。结果,我能够得到一个 3 个字符的字符串。
对于一个代理对表示的字符,可以通过连续指定上代理和下代理的字符编码得到一个字符。
console.log(String.fromCharCode(55357, 56888));
>> 😸
通过为代理对表示的字符的上代理和下代理分别连续指定UTF-16字符编码,我们能够获得由对应的单个字符组成的字符串。
String 对象静态方法 String.fromCodePoint 从指定的 Unicode 代码点创建一个字符串。这里我们描述如何使用 String 对象的 String.fromCodePoint 方法。
从 Unicode 代码点 (fromCodePoint) 创建字符串
String 对象的 fromCodePoint 方法从参数中指定的 Unicode 代码点创建并返回一个字符串。格式如下。
String.fromCodePoint(代码点[, ...[, 代码点]])
创建并返回与参数中指定的 Unicode 代码点对应的字符串。Unicode 代码点是介于 0x0000 和 0x10FFFF(0 到 1114111)之间的数字。如果指定了无效代码点,则会引发 RangeError。
看看下面的示例。
console.log(String.fromCodePoint(23665, 19996, 30465));
>> 山东省
它指定了三个 Unicode 代码点,对应于“山”、“东”和“省”作为参数。结果,我能够得到一个 3 个字符的字符串。
由代理对表示的字符如果是 Unicode 代码点,也可以由单个代码表示。
console.log(String.fromCodePoint(128568));
>> 😸
String 对象的实例方法 toLowerCase 返回一个新字符串,该字符串将目标字符串中的所有大写字母字符转换为小写字母。如果目标字符串包含小写字母字符,toUpperCase 还会返回一个转换为大写的新字符串。本节介绍如何使用 String 对象的 toLowerCase 和 toUpperCase 方法。
将大写字母转换为小写字母 (toLowerCase)
String 对象的 toLowerCase 方法将目标字符串中的大写字母转换为小写字母并将其作为新字符串返回。格式如下。
字符串.toLowerCase()
返回一个大写字母转换为小写字母的新字符串。半角和全角字母都可能发生变化。它不会对原始字符串进行任何更改。
看看下面的示例。
let str;
str = 'Hello! Good Morning.';
console.log(str.toLowerCase());
>> hello! good morning.
str = 'Thank You';
console.log(str.toLowerCase());
>> thank you
获取一个新字符串,其中目标字符串中的所有大写字母字符都转换为小写。半角和全角字符都被转换。除了大写字母,它不会改变任何东西。
将小写字母转换为大写字母 (toUpperCase)
String 对象的 toUpperCase 方法将目标字符串中的小写字母字符转换为大写,并将其作为新字符串返回。格式如下。
字符串.toUpperCase()
返回一个小写字母转换为大写字母的新字符串。半角和全角字母都可能发生变化。它不会对原始字符串进行任何更改。
看看下面的示例。
let str;
str = 'Hello! Good Morning.';
console.log(str.toUpperCase());
>> HELLO! GOOD MORNING.
str = 'Thank You';
console.log(str.toUpperCase());
>> THANK YOU
获取一个新字符串,其中目标字符串中的所有小写字母字符都转换为大写。半角和全角字符都被转换。除了小写字母,它不会改变任何东西。
String对象的实例方法indexOf在目标字符串中搜索指定的字符串,如果找到则返回位置。同样,lastIndexOf 方法从目标字符串的末尾开始搜索,看它是否包含指定的字符串。本节介绍如何使用 String 对象的 indexOf 和 lastIndexOf 方法。
从字符串开头搜索 (indexOf)
String 对象的 indexOf 方法从字符串的开头开始在目标字符串中搜索指定的字符串,如果找到则返回起始位置。格式如下。
字符串.indexOf(搜索字符串[, 起始索引])
在第一个参数中指定要搜索的字符串。搜索从目标字符串的开头开始,但您可以使用第二个参数指定开始搜索的索引。即使找到多个,返回值也将是第一个找到的索引。如果未找到,则返回 -1。
看看下面的示例。
let str = 'PobSobHobbob';
console.log(str.indexOf('ob'));
>> 1
console.log(str.indexOf('ob', 2));
>> 4
目标字符串中有多个’ub’字符串要查找,但如果不指定位置,则从字符串开头查找,返回找到的第一个位置。返回本次找到的字符串中第一个字符的索引。如果指定了位置,则返回在该位置之后找到的第一个位置。
从字符串末尾开始搜索 (lastIndexOf)
String 对象的 lastIndexOf 方法从字符串的末尾到开头在目标字符串中搜索指定的字符串,如果找到则返回第一个位置。格式如下。
字符串.lastIndexOf(搜索字符串[, 起始索引])
在第一个参数中指定要搜索的字符串。搜索从目标字符串的末尾开始向前搜索,或者第二个参数可以指定开始搜索的索引。即使找到多个,返回值也将是第一个找到的索引。如果未找到,则返回 -1。
看看下面的示例。
let str = 'PobSobHobbob';
console.log(str.lastIndexOf('ob'));
>> 10
console.log(str.lastIndexOf('ob', 6));
>> 4
目标字符串有多个’ub’字符串要查找,但如果不指定位置,则从字符串末尾开始查找,返回找到的第一个位置。返回本次找到的字符串中第一个字符的索引。如果指定了位置,则返回在该位置之后找到的第一个位置。
String对象的includes实例方法在目标字符串中搜索指定的字符串,返回true或false。这里我们将解释如何使用String对象的includes方法。
搜索字符串(包括)
String对象的includes方法在目标字符串中查找指定的字符串,找到则返回true,找不到则返回false。格式如下。
字符串.includes(搜索字符串[, 起始索引])
在第一个参数中指定要搜索的字符串。搜索从目标字符串的开头开始,但您可以使用第二个参数指定开始搜索的索引。如果找到则返回 true,否则返回 false。
看看下面的示例。
let str = 'Blue Red Yellow';
console.log(str.includes('Red'));
>> true
console.log(str.includes('Red', 7));
>> false
console.log(str.includes('Green'));
>> false
‘Red’包含在目标字符串中,因此返回true,但如果指定7作为搜索开始位置,则之后找不到’Red’,因此返回false。返回 false,因为 ‘Green’ 不在字符串中。
如果目标字符串以指定字符串开头,则 String 对象的实例方法 startsWith 返回 true 或 false。另外,endsWith判断目标字符串的结尾是否为指定字符串,返回true或false。本节介绍如何使用 String 对象的 startsWith 和 endsWith 方法。
检查字符串的开头 (startsWith)
String对象的startsWith方法判断目标字符串是否以指定字符串开头,返回true或false。格式如下。
字符串.startsWith(搜索字符串[,起始位置])
在第一个参数中指定要搜索的字符串。搜索是从字符串的开头执行的,但是如果起始位置被指定为第二个参数,它会从起始位置开始搜索匹配的字符串(位置由索引指定,默认为 0 和)。如果指定的字符串与开头匹配,则返回 true,否则返回 false。
看看下面的示例。
let str = '山东省青岛市';
console.log(str.startsWith('山东'));
>> true
console.log(str.startsWith('东省'));
>> false
console.log(str.startsWith('东省', 1));
>> true
如果指定“Tokyo”作为要搜索的字符串,则返回 true,但如果指定“Kyoto”,则返回 false。但是,如果指定 1 作为起始位置,目标字符串将被视为 ‘Kyoto Chiyoda Ward’,因此如果指定 ‘Kyoto’ 作为搜索字符串,将返回 true。
查找字符串的结尾 (endsWith)
String对象的endsWith方法判断目标字符串是否以指定字符串结尾,返回true或false。格式如下。
字符串.endsWith(搜索字符串[, 字符串长度])
在第一个参数中指定要搜索的字符串。搜索是针对字符串的末尾,但如果字符串的长度指定为第二个参数,它将在指定长度的末尾搜索匹配项(指定字符数,而不是索引)。点)。如果指定的字符串与结尾匹配,则返回 true,否则返回 false。
看看下面的示例。
let str = 'baseball';
console.log(str.endsWith('all'));
>> true
console.log(str.endsWith('eba'));
>> false
console.log(str.endsWith('eba', 6));
>> true
如果将“all”指定为要搜索的字符串,则返回 true,但如果将“eba”指定为要搜索的字符串,则返回 false。如果您只指定 6 作为字符串长度,目标字符串将被视为 ‘baseba’,因此将 ‘eba’ 指定为要搜索的字符串将返回 true。
String 对象实例方法 trim 返回一个新字符串,其中从目标字符串中删除了前导和尾随空格。trimStart 删除字符串开头的空格,trimEnd 删除字符串末尾的空格。本节介绍如何使用 String 对象的 trim、trimStart 和 trimEnd 方法。
从字符串的开头和结尾删除空格(trim)
String 对象的 trim 方法返回一个新字符串,其中从目标字符串中删除了前导和尾随空格。格式如下。
字符串.trim()
返回一个从字符串的开头和结尾删除空格的新字符串。空白包括空格、制表符和换行符。
看看下面的示例。
let str = ' My Watch ';
console.log('\'' + str.trim() + '\'');
>> 'My Watch'
从目标字符串中去除前导和尾随空格。保留不在字符串开头或结尾的空白字符。
String 对象的 trimStart 方法返回一个新字符串,其中从目标字符串中删除了前导空格。格式如下。
字符串.trimStart()
返回一个从字符串开头删除空格的新字符串。空白包括空格、制表符和换行符。
看看下面的示例。
let str = ' My Watch ';
console.log('\'' + str.trimStart() + '\'');
>> 'My Watch '
从目标字符串中删除了前导空格。保留不在字符串开头或结尾的空白字符。
从字符串末尾删除空格 (trimEnd)
String 对象的 trimEnd 方法返回一个新字符串,其中从目标字符串中删除了尾随空格。格式如下。
字符串.trimEnd()
返回一个从字符串末尾删除空格的新字符串。空白包括空格、制表符和换行符。
看看下面的示例。
let str = ' My Watch ';
console.log('\'' + str.trimEnd() + '\'');
>> ' My Watch'
从目标字符串中删除尾随空格。保留不在字符串开头或结尾的空白字符。
String 对象的实例方法 padStart 重复将指定的字符串添加到目标字符串的前面,直到它达到指定的长度。此外,padEnd 将指定的字符串重复附加到字符串的末尾。本节介绍如何使用 String 对象的 padStart 和 padEnd 方法。
在开头添加一个字符串并更改为指定长度(padStart)
String 对象的 padStart 方法返回一个新的字符串,该字符串重复前面加上另一个指定的字符串,使目标字符串具有指定的长度。格式如下。
字符串.padStart(字符串长度[, 填充字符串])
将重复的字符串添加到目标字符串的开头,达到第一个参数指定的长度。默认情况下,要追加的字符串为空,但您可以指定要追加第二个参数的字符串。
看看下面的示例。
let str = 'List';
console.log('\'' + str.padStart(7) + '\'');
>> ' List'
console.log('\'' + str.padStart(9, '-+') + '\'');
>> '-+-+-List'
重复将空格或指定的字符串添加到字符串的开头,使字符串的长度为指定的长度。
在末尾添加一个字符串并更改为指定长度(padEnd)
String 对象的 padEnd 方法通过在目标字符串的末尾重复追加指定的字符串到指定的长度返回一个新的字符串。格式如下。
字符串.padEnd(字符串长度[, 填充字符串])
将重复的字符串追加到目标字符串的末尾,达到第一个参数指定的长度。默认情况下,要追加的字符串为空,但您可以指定要追加第二个参数的字符串。
看看下面的示例。
let str = 'List';
console.log('\'' + str.padEnd(7) + '\'');
>> 'List '
console.log('\'' + str.padEnd(9, '-+') + '\'');
>> 'List-+-+-'
在字符串的末尾重复追加空格或指定的字符串,使字符串的长度为指定的长度。