一、语法对比
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!
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...