zoukankan      html  css  js  c++  java
  • String 中 slice、substring、substr 的使用方法

    区别

    slice

    截取从 start 位置开始, end 位置结束(不包含 end) 的字符串,返回一个新字符串

    若参数为负数,需要从尾部位置倒数 负数参数长度 作为生效位置

    start 大于 end ,则返回空字符串

    start 大于字符串长度,返回空字符串

    substring

    截取从 start 位置开始, end 位置结束(不包含 end) 的字符串,返回一个新字符串

    不支持负数,若有负数,将会重置为 0

    start 大于 end ,会将两者位置对调

    start 大于字符串长度,返回空字符串

    substr

    截取从 start 位置开始, 截取长度为 length返回一个新字符串

    start 为负数,需要从尾部位置倒数 start长度 作为生效位置

    length 不支持负数,若 length 为负数,会被重置成 0,将返回空字符串

    start 大于字符串长度,返回空字符串

    备注:ECMAscript 没有对该方法进行标准化,因此反对使用它


    一、slice

    使用语法

    s.slice(start, end)
    

    说明

    截取从 start 位置开始, end 位置结束(不包含 end) 的字符串,返回一个新字符串

    若参数为负数,需要从尾部位置倒数 负数参数长度 作为生效位置

    start 大于 end ,则返回空字符串

    start 大于字符串长度,返回空字符串

    例子

    let s = '12345678'
    

    应用场景

    1. 没有参数, 从 0 开始到结束位置进行截取
    s.slice()  // s = '12345678'  --->  '12345678'
    
    2. 一个参数
    2.1 
        正数:从 start 开始到结束位置进行截取,超出总长度,返回空字符串
        s.slice(0)  // s = '12345678'  --->  '12345678'
        s.slice(1)  // s = '12345678'  --->  '2345678'
        s.slice(10)  // s = '12345678'  --->  ''
    
    2.2 
        负数:若参数为负数,需要从尾部位置倒数 `负数参数长度` 作为生效位置
        (可将负数参数与字符串长度相加即可得到生效数值)
        s.slice(-2)  // s.slice(6) ---> s = '12345678'  --->  '78'
    
    3. 两个参数
    3.1 
        正数:从 start 开始到 end 位置进行截取
        s.slice(1, 2)  // s = '12345678'  --->  '2'
    
    3.2 
        负数:若参数为负数,需要从尾部位置倒数 `负数参数长度` 作为生效位置
        (可将负数参数与字符串长度相加即可得到生效数值)
        s.slice(5, -1)  // s.slice(5, 7) ---> s = '12345678'  --->  '67'
        s.slice(-2, -1)  // s.slice(6, 7) ---> s = '12345678'  --->  '7'
        s.slice(-1, -2)  // s.slice(7, 6) ---> s = '12345678'  --->  ''
    

    二、substring

    使用语法

    s.substring(start, end)
    

    说明

    截取从 start 位置开始, end 位置结束(不包含 end) 的字符串,返回一个新字符串

    不支持负数,若有负数,将会重置为 0

    start 大于 end ,会将两者位置对调

    start 大于字符串长度,返回空字符串

    例子

    let s = '12345678'
    

    应用场景

    1. 没有参数, 从 0 开始到结束位置进行截取
    s.substring()  // s = '12345678'  --->  '12345678'
    
    2. 一个参数
    2.1
        正数:从 start 开始到结束位置进行截取,超出总长度,返回空字符串
        s.substring(0)  // s = '12345678'  --->  '12345678'
        s.substring(1)  // s = '12345678'  --->  '2345678'
        s.substring(10)  // s = '12345678'  --->  ''
    
    2.2
        负数:若参数为负数,重置为 0
        s.substring(-2)  // s.substring(0) ---> s = '12345678'  --->  '12345678'
    
    3. 两个参数
    3.1
        正数:从 start 开始到 end 位置进行截取
        start 若比 end 大,将会将两者位置对调 
        s.substring(1, 2)  // s = '12345678'  --->  '2'
        s.substring(2, 1)  // s.substring(1, 2) ---> s = '12345678'  --->  '2'
    
    3.2
        负数:若参数为负数,重置为 0
        start 若比 end 大,将会将两者位置对调 
        s.substring(5, -1)  // s.substring(5, 0) ---> s.substring(0, 5) ---> s = '12345678'  --->  '12345'
        s.substring(-2, -1)  // s.substring(0, 0) ---> s = '12345678'  --->  '0'
    

    三、substr

    使用语法

    s.substr(start, length)
    

    说明

    截取从 start 位置开始, 截取长度为 length返回一个新字符串

    start 为负数,需要从尾部位置倒数 start长度 作为生效位置

    length 不支持负数,若 length 为负数,会被重置成 0,将返回空字符串

    start 大于字符串长度,返回空字符串

    例子

    let s = '12345678'
    

    应用场景

    1. 没有参数, 从 0 开始到结束位置进行截取
    s.substr()  // s = '12345678'  --->  '12345678'
    
    2. 一个参数
    2.1
        正数:从 start 开始到结束位置进行截取,超出总长度,返回空字符串
        s.substr(0)  // s = '12345678'  --->  '12345678'
        s.substr(1)  // s = '12345678'  --->  '2345678'
        s.substr(10)  // s = '12345678'  --->  ''
    
    2.2
        负数:若 start 为负数,需要从尾部位置倒数 `start长度` 作为生效位置
        (可将 start 与字符串长度相加即可得到生效数值)
        s.substr(-2)  // s.substr(6) ---> s = '12345678'  --->  '78'
    
    3. 两个参数
    3.1
        正数:从 start 开始,截取长度为 length
        s.substr(1, 2)  // s = '12345678'  --->  '23'
        s.substr(2, 1)  // s = '12345678'  --->  '3'
    
    3.2
        负数:若 start 为负数,需要从尾部位置倒数 `start长度` 作为生效位置
        (可将 start 与字符串长度相加即可得到生效数值)
        若 length 为负数,会被重置成 0,将返回空字符串
        s.substr(5, -1)  // s.substr(5, 0) ---> s = '12345678'  --->  ''
        s.substr(-2, 1)  // s.substr(6, 1) ---> s = '12345678'  --->  '7'
    
    都读到最后了、留下个建议如何
  • 相关阅读:
    jquery获取transform里面的值
    H5左滑删除JS插件
    IOS微信浏览器点击事件不起作用问题
    jquery获取不了ajax动态添加的内容的解决办法
    H5跟ios、android交互跟数据对接
    JS图片赖加载例子
    苹果手机浏览器下拉会闪动的解决办法
    jquery.rotate.js可选抽奖次数和中奖内容的转盘抽奖demo
    Html5的localStorage与sessionStorage五种循序渐进的使用方法
    tar 「解/壓」 包
  • 原文地址:https://www.cnblogs.com/linjunfu/p/12523817.html
Copyright © 2011-2022 走看看