JavaScript截取字符串的Slice、Substring、Substr函数详解和比较


Posted in Javascript onMarch 20, 2014

在JavaScript中,提取子字符串主要是通过 Slice、Substring、Substr 三个方法之一。

// slice 
// 语法: string.slice(start [, stop])
"Good news, everyone!".slice(5,9); 
// 'news'
// substring 
// 语法: string.substring(indexA [, indexB])
"Good news, everyone!".substring(5,9); 
// 'news'
// substr
// 语法: string.substr(start [, length])
"Good news, everyone!".substr(5,4); 
// 'news'

在三个方法之中输入一个  start 的索引参数,和一个可选的 end 索引( 或 length )参数。

但他们在一些重要的方面有所不同:
1.substr()方法从指定位置,提取指定数量的字符。
param: start 开始提取字符的位置索引,length 提取字符的数量长度。
return: 一个新的字符串。 从 start 处开始的 length 个字符。
在不同浏览器有不一致的表现,现代浏览器允许 start 索引参数为负数,来表示从字符串结尾处开始,提取字符的数量。但是在ie8及以下版本浏览器 start索引参数 最小从0开始计算。【 substr 为Web浏览器附加的ECMAScript特性,不建议使用时 start 索引为负值】

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

2.substring() 方法用于提取字符串 一个index索引至另一个之间的子集, 或是直到字符串的结束。
param: indexA, indexB 两个参数取值范围为一个0 至 字符串长度之间的整数。
return: 返回一个新的字符串, 从小的索引开始 到 大的索引之间,包括小的索引位置字符,不包括大的索引位置字符。
substring 的参数是可反转的,它总是使用小的的参数值作为开始,大的参数值作为结束。 如果参数是小于0或NaN,它被看作是0,如果参数大于字符串的长度,被视为字符串的长度值.
// assumes a print function is defined
var anyString = "Mozilla";
// Displays "Moz"
console.log(anyString.substring(0,3));
console.log(anyString.substring(3,0));
// Displays "lla"
console.log(anyString.substring(4,7));
console.log(anyString.substring(7,4));
// Displays "Mozill"
console.log(anyString.substring(0,6));
// Displays "Mozilla"
console.log(anyString.substring(0,7));
console.log(anyString.substring(0,10));

3.slice 提取字符串的一部分。
param: beginSlice开始提取字符的位置索引,可以为负,如果为负值被视为(sourceLength-beginSlice),sourceLength是字符串的长度,即:从字符串的尾部开始算起的位置endSlice 结束提取的字符的位置索引。如果省略,提取到结束。如果为负值被视为(sourceLength-endSlice)。
return: 返回一个新的字符串,从 start 开始(包括 start)到 end 结束(不包括 end)为止的所有字符。
参数都可以为负,如果索引是负的,则从字符串的尾部开始算起。

var str1 = "The morning is upon us.";
console.log(str1.slice(4, -2));   //  morning is upon u
var str = "The morning is upon us.";
str.slice(-3);     // "us."
str.slice(-3, -1); // "us"
str.slice(0, -1);  // "The morning is upon us"
Javascript 相关文章推荐
深入认识JavaScript中的函数
Jan 22 Javascript
插件:检测javascript的内存泄漏
Mar 04 Javascript
jQuery实现id模糊查询的小例子
Mar 19 Javascript
jQuery如何取id有.的值一般的方法是取不到的
Apr 18 Javascript
node.js中的socket.io的广播消息
Dec 15 Javascript
JQuery操作元素的css样式
Mar 09 Javascript
AngularJS ng-style中使用filter
Sep 21 Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
Dec 16 Javascript
浅谈在不使用ssr的情况下解决Vue单页面SEO问题(2)
Nov 08 Javascript
javascript获取select值的方法完整实例
Jun 20 Javascript
Vue 实现对quill-editor组件中的工具栏添加title
Aug 03 Javascript
vue单应用在ios系统中实现微信分享功能操作
Sep 07 Javascript
js拖拽一些常见的思路方法整理
Mar 19 #Javascript
使用jquery实现以post打开新窗口
Mar 19 #Javascript
jquery判断小数点两位和自动删除小数两位后的数字
Mar 19 #Javascript
改变隐藏的input中value值的方法
Mar 19 #Javascript
js获取url中的参数且参数为中文时通过js解码
Mar 19 #Javascript
JS 打印界面的CSS居中代码适用所有浏览器
Mar 19 #Javascript
兼容所有浏览器的js复制插件Zero使用介绍
Mar 19 #Javascript
You might like
《魔兽争霸3:重制版》翻车了?你想要的我们都没有
2019/11/07 魔兽争霸
PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
2014/06/12 PHP
PHP date()函数警告: It is not safe to rely on the system解决方法
2014/08/20 PHP
ThinkPHP模板替换与系统常量及应用实例教程
2014/08/22 PHP
php 利用array_slice函数获取随机数组或前几条数据
2015/09/30 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
2016/07/06 PHP
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
2019/05/31 PHP
JavaScript去掉空格的方法集合
2010/12/28 Javascript
Ajax请求在数据量大的时候出现超时的解决方法
2014/02/27 Javascript
js实现的全国省市二级联动下拉选择菜单完整实例
2015/08/17 Javascript
jQuery实现响应鼠标滚动的动感菜单效果
2015/09/21 Javascript
Bootstrop实现多级下拉菜单功能
2016/11/24 Javascript
BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
2016/12/01 Javascript
JavaScript实现垂直滚动条效果
2017/01/18 Javascript
利用JQuery操作iframe父页面、子页面的元素和方法汇总
2017/09/10 jQuery
webpack打包js的方法
2018/03/12 Javascript
最简单的JS实现json转csv的方法
2019/01/10 Javascript
Element Alert警告的具体使用方法
2020/07/27 Javascript
antd日期选择器禁止选择当天之前的时间操作
2020/10/29 Javascript
[52:00]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs Optic
2018/04/02 DOTA
Python学习笔记(二)基础语法
2014/06/06 Python
分析Python编程时利用wxPython来支持多线程的方法
2015/04/07 Python
Python enumerate索引迭代代码解析
2018/01/19 Python
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
2018/10/09 Python
Python实现E-Mail收集插件实例教程
2019/02/06 Python
Python模块的定义,模块的导入,__name__用法实例分析
2020/01/07 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
2020/04/27 Python
WatchShop法国:英国排名第一的独立手表零售商
2020/02/17 全球购物
新西兰最大的连锁超市:Countdown
2020/06/04 全球购物
中学生团员自我评价分享
2013/12/07 职场文书
励志演讲稿500字
2014/08/21 职场文书
学子宴致辞大全
2015/07/27 职场文书
私人贷款担保书该怎么写呢?
2019/07/02 职场文书
2019年励志签名:致拼搏路上的自己
2019/10/11 职场文书
python实现自动化群控的步骤
2021/04/11 Python
SQL Server使用导出向导功能
2022/04/08 SQL Server