substring()与substr()的主要区别

substring()方法返回一个索引和另一个索引之间的字符串,语法如下:

str.substring(indexStart, [indexEnd])

下面有六点需要注意:

  • substring()从提取的字符indexStart可达但不包括 indexEnd
  • 如果indexStart 等于indexEnd,substring()返回一个空字符串。
  • 如果indexEnd省略,则将substring()字符提取到字符串的末尾。
  • 如果任一参数小于0或是NaN,它被视为为0。
  • 如果任何一个参数都大于stringName.length,则被视为是stringName.length。
  • 如果indexStart大于indexEnd,那么效果substring()就好像这两个论点被交换了一样; 例如,str.substring(1, 0) == str.substring(0, 1)

以下是一些示例代码:

var str = 'abcdefghij';
console.log('(1, 2): '   + str.substring(1, 2));   // '(1, 2): b'
console.log('(1, 1): '   + str.substring(1, 1));   // '(1, 1): '
console.log('(-3, 2): '  + str.substring(-3, 2));  // '(-3, 2): ab'
console.log('(-3): '     + str.substring(-3));     // '(-3): abcdefghij'
console.log('(1): '      + str.substring(1));      // '(1): bcdefghij'
console.log('(-20, 2): ' + str.substring(-20, 2)); // '(-20, 2): ab'
console.log('(2, 20): '  + str.substring(2, 20));  // '(2, 20): cdefghij'
console.log('(20, 2): '  + str.substring(20, 2));  // '(20, 2): cdefghij'

substr()方法返回从指定位置开始的字符串中指定字符数的字符,语法如下:

str.substr(start, [length])

下面有四点需要注意:

  • substr()会从start获取长度为length字符(如果截取到字符串的末尾,则会停止截取)。
  • 如果start是正的并且大于或等于字符串的长度,则substr()返回一个空字符串。
  • start为负数,则将该值加上字符串长度后再进行计算(如果加上字符串的长度后还是负数,则从0开始截取)。
  • 如果length为0或为负数,substr()返回一个空字符串。如果length省略,则将substr()字符提取到字符串的末尾。

以下是一些示例代码:

var str = 'abcdefghij';
console.log('(1, 2): '   + str.substr(1, 2));   // '(1, 2): bc'
console.log('(-3, 2): '  + str.substr(-3, 2));  // '(-3, 2): hi'
console.log('(-3): '     + str.substr(-3));     // '(-3): hij'
console.log('(1): '      + str.substr(1));      // '(1): bcdefghij'
console.log('(-20, 2): ' + str.substr(-20, 2)); // '(-20, 2): ab'
console.log('(20, 2): '  + str.substr(20, 2));  // '(20, 2): '

需要注意的是,Microsoft的JScript不支持起始索引的负值。如果要使用此功能,可以使用以下兼容性代码来解决此错误:

// only run when the substr() function is broken
if ('ab'.substr(-1) != 'b') {/***  Get the substring of a string*  @param  {integer}  start   where to start the substring*  @param  {integer}  length  how many characters to return*  @return {string}*/String.prototype.substr = function(substr) {return function(start, length) {// call the original methodreturn substr.call(this,// did we get a negative start, calculate how much it is from the beginning of the string// adjust the start parameter for negative valuestart < 0 ? this.length + start : start,length)}}(String.prototype.substr);
}

substring()方法的参数表示起始和结束索引,substr()方法的参数表示起始索引和要包含在生成的字符串中的字符的长度,示例如下:

var text = 'Mozilla';
console.log(text.substring(2,5)); // => "zil"
console.log(text.substr(2,3)); // => "zil"

========

slice()

slice()方法返回一个索引和另一个索引之间的字符串,语法如下:

str.slice(beginIndex[, endIndex])

下面有三点需要注意:

  • beginIndex为负数,则将该值加上字符串长度后再进行计算(如果加上字符串的长度后还是负数,则从0开始截取)。
  • 如果beginIndex大于或等于字符串的长度,则slice()返回一个空字符串。
  • 如果endIndex省略,则将slice()字符提取到字符串的末尾。如果为负,它被视为strLength + endIndex其中strLength是字符串的长度。

以下是一些示例代码:

var str = 'abcdefghij';
console.log('(1, 2): '   + str.slice(1, 2));   // '(1, 2): b'
console.log('(-3, 2): '  + str.slice(-3, 2));  // '(-3, 2): '
console.log('(-3, 9): '  + str.slice(-3, 9));  // '(-3, 9): hi'
console.log('(-3): '     + str.slice(-3));     // '(-3): hij'
console.log('(-3,-1): ' + str.slice(-3,-1));     // '(-3,-1): hi'
console.log('(0,-1): '  + str.slice(0,-1));     // '(0,-1): abcdefghi'
console.log('(1): '      + str.slice(1));      // '(1): bcdefghij'
console.log('(-20, 2): ' + str.slice(-20, 2)); // '(-20, 2): ab'
console.log('(20): '     + str.slice(20));  // '(20): '
console.log('(20, 2): '  + str.slice(20, 2));  // '(20, 2): '

substring与substr的区别相关推荐

  1. js中的extend的用法及其JS中substring与substr的区别

    1.    JS中substring与substr的区别 之前在项目中用到substring方法,因为C#中也有字符串的截取方法Substring方法,当时也没有多想就误以为这两种方法的使用时一样的. ...

  2. js substring和substr的区别实例,一目了然

    2019独角兽企业重金招聘Python工程师标准>>> var str = "0123456789"; alert(str.substring(0));----- ...

  3. js中slice,SubString和SubStr的区别

    slice() 定义和用法 slice() 方法可从已有的数组中返回选定的元素. string.slice(start, end)提取一个字符串 string.substring(start, end ...

  4. 【JS点滴】substring和substr以及slice和splice的用法和区别。

    那么就由一道笔试题引入吧,已知有字符串a="get-element-by-id",写一个function将其转化成驼峰表示法"getElementById": ...

  5. 字符串 substring()和 substr()之间的区别

    字符串 substring()和 substr()之间的区别 相同点 substring()和substr()都是用来截取字符串的 当只有一个参数的时候,两者的作用一样,都是截取字符串,从当前下标开始 ...

  6. slice,substring,substr的区别

    1.都为正整数//例子数据 var arr = [1,2,3,4,5,6,7], var str = "helloworld!"; //注意这里有个!号也算一位若有空格,空格也算一 ...

  7. substring、substr以及slice、splice用法和区别

    关于substring() substring(start,stop)表示返回从start开始到stop处之间的新字符串,其长度为stop减 start. 特点: 包含start,但不包含stop 且 ...

  8. 截取字符串slice(),substring() ,substr()。

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

  9. js字符串截取函数的三种方式(slice()、substring()、substr())

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

最新文章

  1. 博士生在没有导师指导的情况下,该如何自己选题发 CVPR ?
  2. Linux中date命令用法及大小比较
  3. Flux快速入门指南
  4. [Splay][线段树] jzoj P5662 尺树寸泓
  5. [vue] vue常用的修饰符有哪些?列举并说明
  6. leetcode 88
  7. spring-102-spring全注解快速实现事务
  8. ASP.NET 安全认证
  9. 总线全称_一篇文章讲透I2C总线协议
  10. Qt中一个.cpp类的函数调用另一个.cpp中类的函数的方法
  11. vue-element-admin——登录页面添加自定义背景
  12. Python学习笔记——cmd提示pip不是内部或外部命令解决方法
  13. 魂斗罗4 java 7723_FC魂斗罗4游戏下载-魂斗罗4FC无敌修改版下载-电玩咖
  14. 区块链-压缩格式的密钥
  15. 赋值运算符的基本用法
  16. html标志着html文档的开始,html标记标志着HTML文档的开始,/html标记标志着HTML文档的结束。...
  17. linux 批量 添加后缀名,Linux下批量修改后缀名(示例代码)
  18. 地图采集车的那些事 | 硬件质量篇
  19. 电脑文件管理,教你批量给全部文件夹名称随机命名
  20. 知道一个IP地址,如何计算出它的子网掩码

热门文章

  1. 图谱实战 | 丁香园医疗领域图谱的构建与应用
  2. Allegro创建板框的方法介绍
  3. 对二维数组的数组名取地址,a,a+1的理解
  4. 【转载】利用ENVI直接建立掩膜去除背景Inf值或NaN值
  5. 通过游戏学java(适合初学者)
  6. Bug的生命周期_Sinno_Song_新浪博客
  7. ImageView组件的应用:图片浏览器
  8. nhibernate访问mysql配置_NHibernate各种数据库连接参数文件配置方法说明
  9. 神经网络作文1000字,我与神经系统作文
  10. python挖矿木马_记一次阿里云被植入挖矿木马的事件