一、语法对比
1、substr
字符串中抽取从 开始 下标开始的指定数目的字符,参数:
-
start必需。要抽取的子串的起始下标。必须是数值。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推 -
end可选。子串中的字符数。必须是数值。如果省略了该参数,那么返回从 stringObject 的开始位置到结尾的字串
string.substr(start,length)
2、 substring
提取字符串中介于两个指定下标之间的字符,返回的子串包括 开始 处的字符,但不包括 结束 处的字符,参数:
-
from必需。一个非负的整数,规定要提取的子串的第一个字符在 string Object 中的位置 -
to可选。一个非负的整数,比要提取的子串的最后一个字符在 string Object 中的位置多 1。如果省略该参数,那么返回的子串会一直到字符串的结尾
string.substring(from, to)
3、 slice
提取字符串的某个部分,并以新的字符串返回被提取的部分,参数:
-
start必须。 要抽取的片断的起始下标,第一个字符位置为 0。如果为负数,则从尾部开始截取。 -
end可选。 紧接着要截取的片段结尾的下标。若未指定此参数,则要提取的子串包括 start 到原字符串结尾的字符串。如果该参数是负数,那么它规定的是从字符串的尾部开始算起的位置。slice(-2) 表明提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。
string.slice(start,end)
二、示例
var str="Hello world!";
1、只传一个参数 m
substr/substring/slice 直接从第 m 位,截取到末尾
str.substr(3) // lo world!
str.substring(3) // lo world!
str.slice(3) // lo world!
2、传两个参数 m,n
substr 从m位开始,取 n 个字符
substring 即从第 m 位取到第 n 位, m > n ,则m、n 交换位置
slice 即从第 m 位取到第 n 位, m > n ,则返回空字符串
// 从第3位取7个字符
str.substr(3, 7) // lo worl,
// substring/slice 前闭后开,从第3位取到第6位
str.substring(3, 7) // lo w
str.slice(3, 7) // lo w
3、参数是负数
参数是负值 -m,-n
substr 会将 -m 参数加上字符串长度 length,-n 转换为0(注意,NaN也会转为0)
substring 会将 -m,-n 都转换成0
slice 会将 -m,-n 与字符串长度 length 相加
// 会将第一个负值参数加上字符串长度,第二个转换为0
str.substr(-2) // d!
// 会将所有负值都转换成0
str.substring(-2) // Hello world!
// 会将负值与字符串长度 length 相加
str.slice(-2) // d!
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...




