实际开发过程中,字符串是一种最常用的一种数据类型,而在程序中对字符串的操作也是十分繁琐,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. ThinkPHP中的动态缓存(S方法)和快速缓存(F方法)

    系统默认的缓存方式是采用File方式缓存,我们可以在项目配置文件里面定义其他的缓存方式,例如,修改默认的缓存方式为Xcache(当然,你的环境需要支持Xcache)    对于File方式缓存下的缓存 ...

  2. caffe初步实践---------使用训练好的模型完成语义分割任务

    caffe刚刚安装配置结束,乘热打铁! (一)环境准备 前面我有两篇文章写到caffe的搭建,第一篇cpu only ,第二篇是在服务器上搭建的,其中第二篇因为硬件环境更佳我们的步骤稍显复杂.其实,第 ...

  3. [MySql] - 数据库备份还原

    导出数据库到SQL方法: mysqldump.exe -u[USERNAME] -p[PASSWORD] -h [IP] jira --lock-all-tables > c:\db.sql m ...

  4. winform里操作打开在panel里的form窗体,子窗体操作同级子窗体或者父窗体的方法

    最近开始了一个winform项目,原先一直都是web项目.遇到个问题,就是在框架内,左侧和中间的main都是用panel来实现的form,就是把form窗体打开到panel里,实现左侧是导航,中间是操 ...

  5. Python字符串处理

    字符串输入: my_string = raw_input("please input a word:") 字符串判断: (1) 判断是不是纯字母 my_string.isalpha ...

  6. Oracle 11g 密码永不过期设置

    [原因/触发因素] 确定是由于oracle11g中默认在default概要文件中设置了“PASSWORD_LIFE_TIME=180天”所导致. [影响和风险] 影响 密码过期后,业务进程连接数据库异 ...

  7. 【总结】JS里的数组排序

    虽然贴了2种办法,但是思路是一致的,都是先从数组里找出最小值,一种是找到一个放进新数组: 另一种是找到后和第i个数交换,i每次自增 主要用到2个函数: 从一个数组里找出最小值: 两个元素互换位置 fu ...

  8. 远程桌面不能连接,提示awgina.dll取代错误的解决办法

    远程桌面不能连接,错误提示:您不能初始化一个远程桌面连接,因为在远程计算机上的windows登录软件被不兼容的软件c:\windows\system32\awgina.dll取代,如下图所示: 原因: ...

  9. nginx-my

    #user nobody; 3 worker_processes 1; 4 5 error_log logs/error.log; 6 #error_log logs/error.log notice ...

  10. HTTP返回码总结(转)

    HTTP协议状态码表示的意思主要分为五类 ,大体是 :   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~  1×× 保留   2×× 表示请求成功地接收   3×× 为完成请求客户需进一步 ...