前言:经常用的这些截取方法,记了忘,忘了记,在此记录一下,以便不时之需;
1.字符串截取
substring(),
slice(),方法可从已有的数组中返回选定的元素,也可用于字符串
substr()(ECMAscript未进行标准化,不建议使用)
,
以上三种都接受一个到两个参数;
substring(start, stop), slice(start,stop) 两个方法参数均为开始下标与结束下标,方法均用于提取字符串中介于两个指定下标之间的字符。但是substring两个参数均为非负整数,slice则可以为负数,具体区别见内容;
substr(start, length)方法可在字符串中抽取从 start 下标开始的指定数目的字符。start可为负数
- 接受一个参数
let str = 'abcde';
str.substring(2); //"cde"
str.slice(2); //"cde"
str.substr(2) //"cde"
均为从index为2的字符截取到最后;
- 接收两个参数
let str = 'abcdefh';
str.substring(2, 4); //"cd" 从index为2的字符开始(包含index为2的开始字符),截取到index为4,不包含index为4的结束字符
str.slice(2, 4); //"cd" 同substring
str.substr(2, 4) //"cdef",从index为2的字符开始(包含第三个),截取四个
上面可以看出,此时subtring()与slice()用法,结果相同
当参数有负数时,二者结果不同,如下
str.slice(2, -4) //'c' 相当于str.slice(2, 3)
-4(倒数第四个字符)转换成正数为str.length -4 = 3; 即str.slice(2, 3)
str.substring(2, -4) //'ab' 相当于str.substring(0, 2)
substring方法两个参数均要为非负整数,且如果 start > stop ,那么该方法在提取子串之前会先交换这两个参数。-4转化0,start,stop交换,最终为str.substring(0, 2)
当start>stop时,二者结果不同;
str.slice(2, 1) //''
当start> stop,返回空字符串
str.subString(2,1) //'b' 相当于str.subString(1, 2)
start > stop ,交换两个参数;