zoukankan      html  css  js  c++  java
  • Javascript 字符串操作方法slice()、substring()和substr()方法的区别

      ECMAScript提供了三个基于子字符串创建新字符串的方法:slice()、substring()和substr(),这三个方法斗湖返回被操作字符串的一个子字符串,而且也都接受一或两个参数。那么这三个方法的区别是什么呢?

    一、slice()

    • 语法:stringObject.slice(start,end)
    • 参数:
    参数描述
    start 要抽取的片断的起始下标。如果是负数,则该参数规定的是从字符串的尾部开始算起的位置。也就是说,-1 指字符串的最后一个字符,-2 指倒数第二个字符,以此类推。
    end 紧接着要抽取的片段的结尾的下标。若未指定此参数,则要提取的子串包括 start 到原字符串结尾的字符串。如果该参数是负数,那么它规定的是从字符串的尾部开始算起的位置。
    • 返回值:一个新的字符串。包括字符串 stringObject 从 start 开始(包括 start)到 end 结束(不包括 end)为止的所有字符。
    • 例子:
    var str = "niu li na";
    console.log(str.slice(2,7));
    console.log(str);
    • 结果:

      可以从结果看到,开始的index为2,即从2开始,直到第二个参数-1为止,也就是6,所以返回的是index为2-6的子字符串。slice()方法不会改变原字符串。

      那么若是参数中有负数呢?

      例子:

    var str = "niu li na";
    console.log(str.length);
    console.log(str.slice(-6,7));
    console.log(str.slice(2,-5));
    console.log(str.slice(-9,-7));
    

      结果:

      从结果可知,slice()方法在遇到负的参数的时候,会将这个负值与字符串的长度相加。

      那么若是参数1大于参数2呢?

      例子:

    var str = "niu li na";
    console.log(str.slice(7,5));
    

      结果为“”。

    二、substring()

    • 语法:stringObject.substring(start,end)
    • 参数:
    参数描述
    start 必需。一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置。
    stop

    可选。一个非负的整数,比要提取的子串的最后一个字符在 stringObject 中的位置多 1。

    如果省略该参数,那么返回的子串会一直到字符串的结尾。

      

    • 返回值:一个新的字符串。包括字符串 stringObject 从 start 开始(包括 start)到 end 结束(不包括 end)为止的所有字符。
    • 例子:
    var str = "niu li na";
    console.log(str.substring(3,7));
    console.log(str);
    

      结果:

      可以从结果看到,开始的index为3,即从3开始,直到第二个参数-1为止,也就是6,所以返回的是index为3-6的子字符串。substring()方法不会改变原字符串。

      那么若是参数中有负数呢?

      例子:

    var str = "niu li na";
    console.log(str.substring(-7,-3));
    console.log(str.substring(-5,7));
    console.log(str.substring(3,-7));
    

      结果:

      从结果可知,substring()方法在遇到负的参数的时候,会将这个负值转化为0。

      那么若是参数1大于参数2呢?

      例子:

    var str = "niu li na";
    console.log(str.substring(9,3));
    

      结果:

      

      当参数1大于参数2时,substring()方法会将参数1作为参数2,参数2作为参数1。

    三、substr()

    • 语法:stringObject.substr(start,length)
    • 参数:
    参数描述
    start 必需。要抽取的子串的起始下标。必须是数值。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推。
    length 可选。子串中的字符数。必须是数值。如果省略了该参数,那么返回从 stringObject 的开始位置到结尾的字串。
    • 返回值:一个新的字符串,包含从 stringObject 的 start(包括 start 所指的字符) 处开始的 length 个字符。如果没有指定 length,那么返回的字符串包含从 start 到 stringObject 的结尾的字符。
    • 例子:
    var str = "niu li na";
    console.log(str.substr(3,4));
    

      结果:

      substr()返回从参数1开始的参数2个字符,也就是说从index为3的字符开始,返回4个字符拼接的字符串。

      那么若是参数中有负数呢?

      例子:

    var str = "niu li na";
    console.log(str.substr(-3,4));
    console.log(str.substr(3,-4));
    console.log(str.substr(-4,-3));
    

      结果:

      从结果可知,substr()方法在遇到负的参数1的时候,会将其与长度相加,遇到负的参数2的时候,会将其转换为0。

      

      总结:

    • slice()方法与substring()的两个参数相同,但是处理前后参数大小和负参数的方法不同。
    • substr()与前两个方法相比,参数2不同,在处理负参数的时候方法也不同。
  • 相关阅读:
    python 命令行传参
    chardet模块下载&安装
    【解决方案】编码问题:UnicodeDecodeError: 'XXX' codec can't decode byte 0xad in position...的错误
    [解决方案]Python脚本运行出现语法错误:IndentationError: unindent does not match any outer indentation level
    perl笔记
    字符串操作
    c++错误及解决方案随记
    本地Java程序访问HTTPs遇到的问题
    学习笔记 : 异常处理
    学习笔记 : python 文件操作
  • 原文地址:https://www.cnblogs.com/niulina/p/5703961.html
Copyright © 2011-2022 走看看