zoukankan      html  css  js  c++  java
  • substr,substring,slice 的区别

        javascript中的三个函数substr,substring,slice都可以用来提取字符串的某一部分(函数名称都是小写,不要写成subStr,subString又或者Substring,记住js是区分大小写的),但是它们之间还是有一些区别的。

    substring(start,end)和slice(start,end)都表示提取从start下标开始(包括该下标上的字符)到end下标结束(不包括该下标上的字符)之间的内容,如果不包含end参数则表示提取从start到结尾的全部字符

    例1:

    "9876543210".substring(0,2)-->"98"    

    "9876543210".slice(0,2)-->"98"

    "9876543210".substring(5)-->"43210"

    "9876543210".slice(5)-->"43210"

    但是他们之间还是有区别的,

    substring不支持负数参数(如果为负数则转换为0来处理),slice支持负数参数(如果参数为负数则表示从最右边算起,例1第一行中的0为-1,1为-2);substring如果end>start则互相交换,而slice则不支持交换

    例2:

    "9876543210".slice(-5,-2)-->"432" 
    "9876543210".substring(-5,-2)-->""

    上面的slice中的-5从尾部0开始数刚好为4,-2则为1,因为不会包含end的字符所以提取了"432"

    而substring则将-5,-2都转换为0来出来所以实际为"9876543210".substring(0,0)所以得到""的空字符串。

    例3:

    "9876543210".slice(5,1)-->""

    "9876543210".substring(5,1)-->"8765"

    上面的slice开始小标大于结束小标, 因为不支持交换所以只能得到""

    substring则被解释为"9876543210".substring(1,5)所以得到了"8765"

    下面来解释一下substr函数,为什么要将substr放到最后呢,因为substr其实是不是作为ECMAScript标准发布的,因此各种浏览器之间不是兼容的,但是既然提出来了还是讲一下

    substr(start,length)函数可以看出其实和上面两种函数的差别,即第二个参数代表的是截取的长度,不再是作为结尾下标来处理,所以该函数表示从开始下标start开始,向右截取length个长度的字符。按照w3c上来讲start是支持负数的,即表示从字符传的结尾开始计算,但是因为该函数并不是标准里的所以各浏览器实现不一,所以还是不建议用负数了。length为负数则不会截取任何字符,因为长度不可能为负的

    例4:

    "9876543210".substr(2,3)-->"765"

    "9876543210".substr(2,-1)-->""

    第一个从开始下标为2的7开始,截取三个字符得到"765"

    第二个因为长度为-1所以不做任何截取操作

    例5:

    "9876543210".substr(-5,2)-->"43"(FireFox)

    "9876543210".substr(-5,2)-->"98"(IE)

    看上面两个实现,FireFox中开始下标-5按照从尾部开始计算取倒数第5个数即4开始截取两个字符得到"43"

    而IE下将-5转换为0因此从左开始计算得到0下标的9,再获取两个长度得到"98"

    可以明显的看到因为不标准的缘故,实现方式产生了不一致。

  • 相关阅读:
    selenium自动化测试资源整理
    python获取目录下文件夹名称
    Appium-测试失败后屏幕截图的
    appium 多个设备同时执行
    七 Appium常用方法介绍
    六 APPIUM Android 定位方式
    Python运维开发基础08-文件基础
    Python运维开发基础09-函数基础
    Python运维开发基础06-语法基础
    Python运维开发基础07-文件基础
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/4969237.html
Copyright © 2011-2022 走看看