最近做项目的时候,字符串截取一直用的是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 或负数,将返回一个空字符串

js基础--substr()和substring()的区别的更多相关文章

  1. JS中substr与substring的区别

    js中substr和substring都是截取字符串中子串,非常相近,可以有一个或两个参数. 语法:substr(start [,length]) 第一个字符的索引是0,start必选 length可 ...

  2. js 使用 substr 和substring 的区别记录

    根据 提示,已经很清楚区别了 区别都是第二个参数 ,substr 是长度 ,而substring 仍是索引数

  3. JS的substr与substring的区别

    substr返回从指定位置开始的指定长度的子字符串 str.substr(star[,length])  第二个参数可选,不选的话,截取到最后,如果length为0或者负数,那么返回的将是一个空字符串 ...

  4. js里slice,substr和substring的区别

    概要: string.slice(start, end)提取一个字符串 string.substring(start, end)提取一个字符串,end不支持负数 string.substr(start ...

  5. 字符串截取 及 substr 和 substring 的区别

    1..字符串截取 str.substr(0, 1) // 获取字符串第一个字符 str.substr(-1) // 获取字符串最后一个字符 str.charAt(str.length - 1) // ...

  6. JS中substr和substring的用法和区别

    substr 和 substring都是JS 截取字符串函数,两者用法很相近,下面是两者的语法很示例: substr 方法 返回一个从指定位置开始的指定长度的子字符串.stringvar.substr ...

  7. substr与substring的区别

    在js中字符截取函数有常用的三个slice().substring().substr()了,下面我来给大家介绍slice().substring().substr()函数在字符截取时的一些用法与区别吧 ...

  8. Javascript中substr和substring的区别

    由于在项目中有需要对字符串进行截取,然后手残使用了IDE自动提示的substr,没想那么多以为substr和substring没多大区别. 然而并不是,且听我一一道来. 1. substr(index ...

  9. substr和substring的区别

    substr和substring两个都是截取字符串的. 两者有相同点,如果只是写一个参数,两者的作用都是一样的:就是截取字符串当前下标以后直到字符串最后的字符串片段. 例如:`var a=”abcde ...

随机推荐

  1. vscode - 添加背景图片

    首先,Ctrl+Shift+P安装backround , 而后重启vscode会有默认的背景图片 修改背景图,可自定义三张 具体请看gif图 最开始时,发现png根本不是全透明,用ps处理了一下(下列 ...

  2. 关于ionic打包出错:ionic Unable to start the daemon process

    一直试都没问题的ionic build android  今天竟然冒出了这个错误 Error:Unable to start the daemon process. This problem migh ...

  3. 标准库Allocator(三)uninitialized_fill等函数的实现

    前面我们使用了uninitialized_fill,来批量初始化某一段内存. 下面提供三个函数的实现代码,这三个代码的共同点是: 1.遇到错误,抛出异常 2.出现异常时,把之前构造的对象全部销毁 所以 ...

  4. 【BIEE】02_新建资料库并创建简单分析

    一.新建资料库 1.开始→打开BI管理→点击新建资料库 2.文件→新建资料档案库 下一步 在下面的框中一次填入 连接类型:OCI 10g/11g(直接选择即可) 数据库名称:(DESCRIPTION ...

  5. (八)Thymeleaf的 th:* 属性之—— 模板布局& th:with& 属性优先级

    3.7 模板布局 模板名称:layout.html 3.7.1 th:fragment e.g.模板名为footer.html页面body部分如下: <body> <div th:f ...

  6. hdu5399

    题意:给你m行个长度为 n的序列或者-1 -1代表这一行的序列不确定,然后让你找出有多少种情况满足对于每一个i 有f1(f2(⋯fm(i)))=i: 思路:分为三种情况:1,每行序列中有反复数输出0: ...

  7. centos自动安装镜像脚本

    #!/bin/bash ######################################################################################## ...

  8. 手动建立storybook

    1. Add @storybook/react npm i --save-dev @storybook/react 2. Add react, react-dom, and babel-core np ...

  9. surface4 笔盖失灵的解决方案

    http://tieba.baidu.com/p/3670357234 先找到设备管理器,找到蓝牙,删除里面所有的设备.然后重启. 之后再次找到蓝牙,匹配pen.就可以用了. 解决的前提是:我确定笔帽 ...

  10. $on、$emit和$broadcast的使用

    $emit只能向parent controller传递event与data( $emit(name, args) ) $broadcast只能向child controller传递event与data ...