substring,substr,和slice的区别详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了substring,substr,和slice的区别详解相关的知识,希望对你有一定的参考价值。

stringObj.slice(start,[end]) 如果 start 为负,将它作为 length + start处理,此处 length 为数组的长度.如果 end 为负,就将它作为 length + end 处理,此处 length 为数组的长度.如果省略 end ,那么 slice 方法将一直复制到 arrayObj 的结尾.如果 end 出现在 start 之前,不复制任何元素到新数组中. strVariable.substring(start,end) 如果 start 或 end 为 NaN 或者负数,那么将其替换为0. 子字符串的长度等于 start 和 end 之差的绝对值.例如,在 strvar.substring(0,3) 和 strvar.substring(3,0) 返回的子字符串的的长度是 3. slice可以对数组操作,substring不行. 参考技术A substr(start [, length])substring(start [, end])slice(start [, end])① 从定义上看: substring和slice是同类的,参数都是字符串的某个{开始}位置到某个{结束}位置(但{结束}位置的字符不包括在结果中);而substr则是字符串的某个{开始}位置起,数length个长度的字符才结束。-- 共性:从start开始,如果没有第2个参数,都是直到字符串末尾。
② substring和slice的区别则是,slice可以接受“负数”,表示从字符串尾部开始计数; 而substring则把负数或其它无效的数,当作0。
"hello world!".slice(-6, -1) // "world""hello world!".substring("abc", 5) // "hello"③ substr的start也可接受负数,也表示从字符串尾部计数,这点和slice相同;但substr的length则不能小于1,否则返回空字符串。
"hello world!".substr(-6, 5) // "world""hello world!".substr(0, -1) // ""所以: 很多人认为substring是多余的:如果只知道位置,那么用slice;如果知道长度,则用substr。本回答被提问者采纳

slice,substr和substring的区别

首先,他们都接收两个参数,slice和substring接收的是起始位置和结束位置(不包括结束位置),而substr接收的则是起始位置和所要返回的字符串长度。

直接看下面例子:

 var test = ‘hello world‘;

 alert(test.slice(4,7)); //o w
 alert(test.substring(4,7)); //o w
 alert(test.substr(4,7)); //o world

这里有个需要注意的地方就是:substring是以两个参数中较小一个作为起始位置,较大的参数作为结束位置。

如:

alert(test.substring(7,4));          //o w

当接收的参数是负数时,

  • slice会将它字符串的长度与对应的负数相加,结果作为参数;
  • substr则仅仅是将第一个参数与字符串长度相加后的结果作为第一个参数;
  • substring则干脆将负参数都直接转换为0。

测试代码如下:

 var test = ‘hello world‘;

 alert(test.slice(-3)); //rld
 alert(test.substring(-3)); //hello world
 alert(test.substr(-3)); //rld

 alert(test.slice(3,-4)); //lo w
 alert(test.substring(3,-4)); //hel
 alert(test.substr(3,-4)); //空字符串

 

以上是关于substring,substr,和slice的区别详解的主要内容,如果未能解决你的问题,请参考以下文章

slice,substr和substring的区别

js字符串截取函数slice()substring()substr()

js字符串截取函数slice()substring()substr()

substring()和substr(),以及跟substring功能相似的slice()

区分substr、substring、slice、split、splice

为啥有两种不同的方法 slice() 和 substring()?