substring()与str.slice()区别

来源:7-21 选定元素slice()

Hot_shit

2016-04-01 17:14

既然substring()不可以用负数来表示,那么str.slice()是不是完全可以代替substring()?

写回答 关注

3回答

  • nadirvishun
    2017-01-05 22:29:00

    substring与slice的参数是起始值到结束值,类似区间;而substr的参数,是起始值和长度(与php的一致但功能没php多)。

    substring与slice的两个参数当为正数时基本一致,除了substring会比较两个参数大小,小的排在前面。

    substring的第一个参数为负数时,则自动认为是0,而第二个参数为负数时,由于表示的是结束值,那绝对返回时空字符串了。

    slice的第一个参数为负数时,则会将字符串长度与此负数相加(和倒着数一致),而第二个参数为负数时,由于表示的是结束值,那绝对返回时空字符串了。

    substr的以一个参数为负数时,则会将字符串长度与此负数相加(和倒着数一致),而第二个参数为负数是,由于表示的是长度,那绝对也是返回空字符串了。

    nadirv...

    没说完不小心点了回复了,个人认为str.slice()完全可以代替substring(),而且有必要扩展这么多方法吗?类似php一样一个方法就能解决吧。 另外上面对于slice说错了: slice的第一个参数为负数时,则会将字符串长度与此负数相加(和倒着数一致),而第二个参数为负数时,同样是将字符串长度与此负数相加(和倒着数一致)。

    2017-01-05 22:40:27

    共 1 条回复 >

  • 慕无忌4210378
    2016-04-01 20:38:03

    当接收的参数是负数时,slice会将它字符串的长度与对应的负数相加,结果作为参数;substr则仅仅是将第一个参数与字符串长度相加后的结果作为第一个参数;substring则干脆将负参数都直接转换为0。测试代码如下:

    var test = 'hello world';

       document.write(test.slice(-3)+'<br>');         //rld
      document.write(test.substring(-3)+'<br>');     //hello world
        document.write(test.substr(-3)+'<br>');        //rld

         document.write(test.slice(3,-4)+'<br>');       //lo w
        document.write(test.substring(1,0)+'<br>');   //hel
         document.write(test.substr(3,-4)+'<br>');    


  • 按照自己的节奏前行
    2016-04-01 19:42:54

    不行哦!

    substring()返回的是字符串;

    str.slice()返回的是数组哦!


    qq_水无声...

    slice()也可以应用于字符串

    2016-10-14 11:58:02

    共 1 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468061 学习 · 21891 问题

查看课程

相似问题