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学习笔记7 原型链的原理
Jan 11 Javascript
解析offsetHeight,clientHeight,scrollHeight之间的区别
Nov 20 Javascript
jquery插件开发之实现jquery手风琴功能分享
Mar 10 Javascript
js判断横竖屏及禁止浏览器滑动条示例
Apr 29 Javascript
好好了解一下Cookie(强烈推荐)
Jun 14 Javascript
javascript获取网页各种高宽及位置的方法总结
Jul 27 Javascript
js实现手机发送验证码功能
Mar 13 Javascript
js canvas实现擦除效果示例代码
Apr 26 Javascript
JS实现简单的天数计算器完整实例
Apr 28 Javascript
jQuery实现的记住帐号密码功能完整示例
Aug 03 jQuery
微信小程序页面渲染实现方法
Nov 06 Javascript
Vue.directive 实现元素scroll逻辑复用
Nov 29 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
php缓冲 output_buffering的使用详解
2013/06/13 PHP
PHP实现简单数字分页效果
2015/07/26 PHP
在PHP语言中使用JSON和将json还原成数组的方法
2016/07/19 PHP
php+ajax简单实现全选删除的方法
2016/12/06 PHP
php与阿里云短信接口接入操作案例分析
2020/05/27 PHP
基于逻辑运算的简单权限系统(实现) JS 版
2007/03/24 Javascript
认识延迟时间为0的setTimeout
2008/05/16 Javascript
基于Jquery和html5的7款个性化地图插件
2015/11/17 Javascript
javascript中eval和with用法实例总结
2015/11/30 Javascript
七个不允许错过的jQuery小技巧
2015/12/21 Javascript
jQuery代码实现对话框右上角菜单带关闭×
2016/05/03 Javascript
jQuery简单实现title提示效果示例
2016/08/01 Javascript
修改Jquery Dialog 位置的实现方法
2016/08/26 Javascript
jQuery使用动画队列自定义动画操作示例
2018/06/16 jQuery
微信小程序项目实践之验证码倒计时功能
2018/07/18 Javascript
vue-cli基础配置及webpack配置修改的完整步骤
2019/10/20 Javascript
vue elementUI 表单校验的实现代码(多层嵌套)
2019/11/06 Javascript
Node.js中文件系统fs模块的使用及常用接口
2020/03/06 Javascript
python实现简单socket通信的方法
2016/04/19 Python
Python通过命令开启http.server服务器的方法
2017/11/04 Python
对python中Librosa的mfcc步骤详解
2019/01/09 Python
Python Django 前后端分离 API的方法
2019/08/28 Python
Python 读取用户指令和格式化打印实现解析
2019/09/02 Python
Python在OpenCV里实现极坐标变换功能
2019/09/02 Python
Django CSRF认证的几种解决方案
2020/03/03 Python
曼联官方网上商店:Manchester United Direct
2017/07/28 全球购物
ProBikeKit德国:在线公路自行车专家
2018/06/03 全球购物
如何理解委托
2012/01/06 面试题
工厂门卫岗位职责
2013/11/25 职场文书
医德考评自我评价
2014/09/14 职场文书
十八大标语口号
2014/10/09 职场文书
内勤岗位职责范本
2015/04/13 职场文书
职场新人刚入职工作总结该怎么写?
2019/05/15 职场文书
总结三种用 Python 作为小程序后端的方式
2022/05/02 Python
windows server 2012安装FTP并配置被动模式指定开放端口
2022/06/10 Servers
JS前端宏任务微任务及Event Loop使用详解
2022/07/23 Javascript