1.substring(start,stop)接收两个参数,第一个参数start为必选参数,表示截取的起点位置下标;第二个参数stop为结束位置下标。返回值为substring中位置为[start,stop)的一个子字符串。两个参数要求为非负整数。
举例说明:
let string = '0123456789';
string.substring(0,2) // 01
string.substring(2,0) //01 start > stop 默认二者调换位置
string.substring(-2,0) // '' start < 0,stop = 0 空字符串
string.substring(-2,1) // 0 start < 0, stop > 0; 默认start为0
string.substring(1); // 123456789
string.substring(-1); // 0123456789
总结起来就是:
substring参数只有一个start的话,会从start位置开始截取到末尾,若start < 0,则 start = 0;
若参数为两个,首先会比较start和stop的大小,值小的放到前面,若为负值则转化为0,截取范围为左闭右开区间;
2.substr(start,stop)也可以接收两个参数,start为必选,表示起始位置下标;stop为可选项,表示想要截取到的字符串的长度。
举例说明:
let string = '0123456789';
//一个参数下:
string.substr(0) // 0123456789
string.substr(-2) // 89 从结尾处向左查询,相当于 string.substr(-2,2)
string.substr(-11) // 0123456789 从结尾处向左查询,超过最大值停留在下标为0的位置
//两个参数下
string.substr(0,2) // 01
string.substr(-3,2) // 78 返回值为父级字符串的长度
string.substr(1,-2) // '' 长度小于1,返回空字符串
总结起来就是:
substr只有一个参数start的话,返回值为下标位置处,到结尾处。若start < 0,会从结尾处开始算下标,并一直截取到结尾处;若start > string.length - 1,返回值为"";
若有两个参数start,stop,stop < 0 的情况下,返回值为""字符串;stop > 0, start < 0,会从结尾处开始算下标,并向右查询长度为stop的字符串。
3.slice同时具有substring和substr的一些特点。可接收两个参数(start,stop),start为必选,stop为可选。
举例说明:
let string = '0123456789';
//只有一个参数的情况下
string.slice(1) // 123456789;
string.slice(-3) // 789;
// 两个参数
string.slice(-3,11) // 789 从结尾处开始的3下标和从开始处的11下标比较,必须保证可以向右截取到,否则为'';
string.slice(-3,1) // '';
string.slice(0,-2) // 01234567;
总结起来就是:
slice与substring相同的地方是都是取两个下标构成的左闭右开区间范围内的字符串,不同的是slice不能根据两个参数的大小互换位置,若第二个参数stop < 0,则string.length + stop作为结束位置的下标。
slice与substr相同的地方为都可以接收一个负参数从结尾处开始查询。