zoukankan      html  css  js  c++  java
  • 字符串截取 slice,substr,substring 的区别

    一 只传递一个参数时候

    let str = '0123456';
    str.slice(5);  //'56'
    str.substr(5); // '56'
    str.substring(5); // '56'
    
    str.slice(-2); // '56'
    str.substr(-2); // '56'
    str.substring(-2);//'0123456'
    

    总结:当传递一个参数时候,slice 和 substr表现一致,都是取初始index,返回该index到末尾的字符串。而substring 出现负数,会自动转化为0

    二 传递两个参数时候

    let str = '0123456';
    str.slice(1,5); // '1234'
    str.substr(1,5);// '12345'
    str.substring(1,5);// '1234'
    
    str.slice(1,-2); // '1234'  
    str.substr(1,-2); // ''     -2会转化为0,表示从index为1开始,后面取0个数
    str.substring(1,-2); // '0' -2会转化为0,并将初始值设为更小的一个值 (0,1)
    

    总结:当传两个参数时候

    1. str.slice(x,y)
      截取[x,y) 区间内的值,当存在负值,可通过反向逆推转化成正数,比如上例中 -2 => 5 ,str.slice(1,-2) = str.slice(1,5);
      注意,当转化后,如果末尾值小于初始值,则 返回'',比如 str.slice(2,0)
      即:slice 第一个参数为初始截取位置为闭区间,第二个参数为截取的末尾位置为开区间,当存在负数时,可通过位置转化为正值,当 转化之后 初始值大于末尾值的,则返回空

    2. str.substr(x,y)
      x为初始值,当为负数时可通过位置比较转化为正数, y为截取的长度。当y大于能够截取的长度时候,会截取当前初始值到字符串末尾的字符串,即str.subStr(4,100) === str.substr(4);当y为0或者负数时,表示截取位数为0,返回 ''

    3. str.substring(x,y)
      x,y中有负数的直接转化为0,然后 以小的数为初始点,大的数为截止点,前闭后开

    三 总结

    slice,substr,substring 都不会改变原来字符串,仅返回截取的字符串

  • 相关阅读:
    [k8s]通过svc来访问集群podhttp://api:8080/api/v1/namespaces/default/services/mynginx/proxy/
    redis 常用配置
    mysql 查询重复值命令
    maven3常用命令创建Project
    nginx如何解决超长请求串
    hbase 使用备忘
    Top命令内存占用剖析
    linux 模拟延时和丢包
    hbase命令备忘
    linux grep命令总结
  • 原文地址:https://www.cnblogs.com/honkerzh/p/13895140.html
Copyright © 2011-2022 走看看