zoukankan      html  css  js  c++  java
  • js基础--substr()和substring()的区别

      最近做项目的时候,字符串截取一直用的是substr()方法,有时候需要截取的内容是中间部分的话就很麻烦,需要分两次,第一次截取前半部分,第二次在第一次的基础上截取后半部分。写了几次之后总觉得没对,应该还有更适合的方法,百度之后发现原来还有一个叫做substring()的方法。这里做一下比较总结。先来看啊可能它们之间的定义吧。

    substr(start,length)

    定义:substring() 方法用于提取字符串中介于两个指定下标之间的字符。

    参数 描述
    start 必需。一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置。
    stop

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

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

    返回值:一个新的字符串,包含从 stringObject 的 start(包括 start 所指的字符) 处开始的 length 个字符。如果没有指定 length,那么返回的字符串包含从 start 到 stringObject 的结尾的字符。

    substring(start,stop)

    定义:substring() 方法用于提取字符串中介于两个指定下标之间的字符。

    参数 描述
    start 必需。一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置。
    stop

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

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

    返回值:一个新的字符串,包含从 stringObject 的 start(包括 start 所指的字符) 处开始的 length 个字符。如果没有指定 length,那么返回的字符串包含从 start 到 stringObject 的结尾的字符。

     下面用几个列子说明区别和注意点:

    var number = "1234567890";

    console.log(number.substring(0)); --> "1234567890"

    console.log(number.substring(10)); --> ""

    console.log(number.substring(20)); --> ""//如果start大于length,则返回空""

    console.log(number.substring(-5));--> "1234567890"

    console.log(number.substring(-8));--> "1234567890"

    console.log(number.substring(-1,2));--> "12"

    console.log(number.substring(-1,-2));--> ""//如果 start 或 end 为负数,那么它将被替换为 0

    console.log(number.substring(5,2));--> "345"//如果 start 比 end 大,那么该方法在提取子串之前会先交换这两个参数

    console.log(number.str(0));-->"1234567890"

    console.log(number.str(10));-->""

    console.log(number.str(20));-->""//如果start大于length,则返回空""

    console.log(number.str(-1));-->"0"

    console.log(number.str(-10));-->"1234567890"//如果start为负数,则start=str.length+start

    console.log(number.str(1,2));-->"23"

    console.log(number.str(1,0));

    console.log(number.str(1,-3));-->""//如果 length 为 0 或负数,将返回一个空字符串

  • 相关阅读:
    selenium + python 环境配置 (三)之启动chrome
    selenium + python 环境配置 (二)之启动IE
    selenium + python 环境配置 (一)
    知源图四点坐标和目标图四点坐标,求透视变换矩阵
    memset()初始化为1的那些事
    NSOJ 4621 posters (离散化+线段树)
    申请到新博客了好开心
    SpringCloud之Hystrix-Dashboard监控,以及踩的坑...
    SpringBoot中在除Controller层 使用Validation的方式
    Docker安装ElasticSearch 以及使用LogStash实现索引库和数据库同步
  • 原文地址:https://www.cnblogs.com/zmc-change/p/6394369.html
Copyright © 2011-2022 走看看