实际开发过程中,字符串是一种最常用的一种数据类型,而在程序中对字符串的操作也是十分繁琐,javascript中就提供了很多字符串相关的方法,然而由于方法过多,很多方法功能有交叉,参数有雷同,容易使用混淆而难以选择。哈哈,你有没有遇到类似的情况。为了以后使用时能顺手拈来,赶快来一起总结一下吧!

javascript有三种取子字符串的方法slicesubstrsubstring它们各有千秋,那么何时使用哪个方法比较快捷高效呢,我们就来回忆一下它们各自的用法吧。

1.slice ——提取字符串的片断,并在新的字符串中返回被提取的部分。

  1)语法:stringObject.slice(start[,end])

  2)参数:①start必需,正数表示字符串起始下标,负数表示从目标字符串的尾部算起。

  ②end可选参数,省略时默认表示从start开始到目标字符串的尾部,为负数表示从目标字符串的尾部算起。

  3)返回值:一个新的字符串。包括字符串 stringObject 从 start 开始(包括 start)到 end 结束(不包括 end)为止的所有字符。

2.substr ——在字符串中抽取从 start 下标开始的指定数目的字符。

   1)语法:stringObject.substr(start[,length])

  2)参数:①start必需,正数表示字符串起始下标,负数表示从目标字符串的尾部算起。

  ②length可选参数,省略时默认表示从start开始到目标字符串的尾部。

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

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

  总结: slice() 和 substr() 方法不同的是,substring() 不接受负的参数。

3.substring ——提取字符串中介于两个指定下标之间的字符。

  1)语法:stringObject.substring(start[,stop])

  2)参数:①必需。一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置。

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

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

  注意:①如果参数 start 与 stop 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串)。

     ②如果 start 比 stop 大,那么该方法在提取子串之前会先交换这两个参数。

  3)返回值:一个新的字符串,该字符串值包含 stringObject 的一个子字符串,其内容是从 start 处到 stop-1 处的所有字符,其长度为 stop 减start

  总结:与 slice() 和 substr() 方法不同的是,substring() 不接受负的参数。

整理如下:

方法 strObj.slice(start[,end])
strObj.substr(start[,length]) strObj.substring(start[,stop])
第1个参数 正数表示字符串起始下标,负数表示从目标字符串的尾部算起。 一个非负的整数。
必需。表示字符串的起始位置。
第2个参数 正数表示字符串起始下标,负数表示从目标字符串的尾部算起。 一个非负的整数。
可选。
第1个参数为负数 从字符串末尾计算位置 视为0
第2个参数为负数 从字符串末尾计算位置 视为长度0,返回空字符串 交换参数,负数视为0
第1个参数大于第2个参数 返回空字符串 从第一个参数开始截取长度为第二个参数的字符串 交换参数再进行截取

综上可以总结三者有如下区别:

  1.第2个参数。slice,substring中表示字符串的结束位置,substr中表示长度。

  2.参数可否为负数。slice方法比较灵活两个参数都可以为负数,substr只有第一个参数可以为负数,substring两个参数都为非负数。

  3.第1个参数大于第2个参数时。substring比较灵活,回交换参数位置,substr第二个参数是长度故不受影响,slice开始位置在结束位置后面则返回空字符串。

注意:负数表示从字符串末尾开始计算,例如:-1表示字符串最后一个字符,-2表示字符串倒数第二个字符;

    在IE下可能并不支持负数从末尾开始计算的方式。

参考文章:http://www.cnblogs.com/ider/p/js-slice-vs-substr-vs-substring-table.html

javascript 中slice,substr,substring方法的对比的更多相关文章

  1. [javascript string] slice();substr();substring();之间的区别

    今天遇到这个问题,发现ぜんぜんわすねまます3个方法,直接上代码吧,[网络版本较多就不注明参考过哪些了 -0- ] var test = 'hello world'; //均一位参数测试 console ...

  2. JavaScript取子串方法slice,substr,substring对比表

    在程序语言中,字符串可以说是最常用的一种类型,而在程序中对字符串的操作也是十分频繁.当程序语言自带多种字符串操作的方法时,用该语言编程程序时就有很多的便利性,提高开发的效率.但是当方法过多,甚至目的相 ...

  3. 浅谈JavaScript中的string拥有方法的原因

    我们都知道,JavaScript数据类型分两大类,基本类型(或者称原始类型)和引用类型. 基本类型的值是保存在栈内存中的简单数据段,它们是按值访问的.JS中有五种基本类型:Undefined.Null ...

  4. JavaScript中Object.prototype.toString方法的原理

    在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. ? 1 2 var arr = []; console.lo ...

  5. Jquery中$(document).ready()与传统JavaScript中的window.onload方法的区别(2016/8/3)

    Jquery中$(document).ready()的作用类似于传统JavaScript中的window.onload方法,不过与window.onload方法还是有区别的. 1.执行时间       ...

  6. JavaScript中事件绑定的方法总结

    最近收集了一些关于JavaScript绑定事件的方法,汇总了一下,不全面,但是,希望便于以后自己查看. JavaScript中绑定事件的方法主要有三种: 1 在DOM元素中直接绑定 2 JavaScr ...

  7. Javascript中alert</script>的方法

    Javascript中alert</script>的方法: <%@ page language="java" import="java.util.*&q ...

  8. URL地址中中文乱码详解(javascript中encodeURI和decodeURI方法、java.net.URLDecoder.encode、java.net.URLDecoder.decode)

    引言: 在Restful类的服务设计中,经常会碰到需要在URL地址中使用中文作为的参数的情况,这种情况下,一般都需要正确的设置和编码中文字符信息.乱码问题就此产生了,该如何解决呢?且听本文详细道来. ...

  9. JavaScript中this的使用方法总结

    JavaScript中this的使用方法总结 在JavaScript中,this的使用分为四种场景,具体请参考阮一峰老师关于this的讲解 第一种情况是纯函数使用 var x =1 ; functio ...

  10. javaScript中的indexOf使用方法

    JavaScript中的indexOf使用方法 概述 indexOf大小写敏感,其中的O要大写 对于字符串而言 indexOf返回字符串第一次出现的位置,若没有出现返回-1 1 var str = & ...

随机推荐

  1. ubuntu 一些命令

    打开终端 ctrl+alt+t 关闭中端 ctrl+shift+q 打开ppt openoffice.org -g xx.ppt &

  2. js问题

    1.原型链问题 1.js中万物皆对象,但对象也分为普通对象和函数对象,Object,Function都是js自带的函数对象,凡是通过 new Function() 创建的对象都是函数对象,其他的都是普 ...

  3. yield

    yield def foo(max): n, a, b = 0, 0, 1 while n<max: yield b a, b = b, a+b n+=1 for item in foo(5): ...

  4. grunt压缩js文件

    grunt是node中很好的管理项目的工具,利用它可以实现对整个项目的管理,避免很多重复性的工作如合并.压缩,检查语法等. 使用grunt首先要安装node环境,nodejs官网http://node ...

  5. 使用OpenLDAP构建基础账号系统

    LDAP - Lightweight Directory Access Protocol,对该协议的具体应用,常见的是微软的Active Directory服务和Linux上的OpenLDAP组件. ...

  6. css实现自适应屏幕高度;

    css实现自适应屏幕高度: <!DOCTYPE html><html lang="en"><head> <meta charset=&qu ...

  7. LeetCode---Hash Table

    299. Bulls and Cows 思路:抽屉法,放进secrets,拿出guess,最终cows = cows - bulls public String getHint(String secr ...

  8. 解决MongoDB磁盘IO问题的三种方法

    1.使用组合式的大文档 我们知道MongoDB是一个文档数据库,其每一条记录都是一个JSON格式的文档.比如像下面的例子,每一天会生成一条这样的统计数据: { metric: "conten ...

  9. 【转】error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory

    错误信息: /usr/local/memcacheq/bin/memcacheq: error while loading shared libraries: libevent-2.0.so.5: c ...

  10. Saying that Java is nice because it works on every OS is like saying that anal sex is nice because it works on every gender.

    Saying that Java is nice because it works on every OS is like saying that anal sex is nice because i ...