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 键盘keyCode键码值表
Dec 24 Javascript
jQuery 文本框得失焦点的简单实例
Feb 19 Javascript
jQuery中常用的遍历函数用法实例总结
Sep 01 Javascript
jQuery实用技巧必备(下)
Nov 03 Javascript
jQuery简单入门示例之用户校验demo示例
Jul 09 Javascript
JS中的数组方法笔记整理
Jul 26 Javascript
AngularJS使用ng-Cloak阻止初始化闪烁问题的方法
Nov 03 Javascript
解决Webpack 热部署检测不到文件变化的问题
Feb 22 Javascript
VUE实现移动端列表筛选功能
Aug 23 Javascript
vue中注册自定义的全局js方法
Nov 15 Javascript
webpack常用构建优化策略小结
Nov 21 Javascript
用webAPI实现图片放大镜效果
Nov 23 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
15种PHP Encoder的比较
2007/03/06 PHP
PHP UTF8编码内的繁简转换类
2009/07/20 PHP
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
2011/04/18 PHP
Laravel框架模板继承操作示例
2018/06/11 PHP
php实现大文件断点续传下载实例代码
2019/10/01 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
Javascript 事件流和事件绑定
2009/07/16 Javascript
Javascript自定义函数判断网站访问类型是PC还是移动终端
2014/01/10 Javascript
jquery mobile 实现自定义confirm确认框效果的简单实例
2016/06/17 Javascript
微信小程序 支付功能实现PHP实例详解
2017/05/12 Javascript
JavaScript中各数制转换全面总结
2017/08/21 Javascript
webpack中的热刷新与热加载的区别
2018/04/09 Javascript
单页面vue引入百度统计的使用方法示例详解
2018/10/13 Javascript
Vue侦测相关api的实现方法
2019/05/22 Javascript
vue路由传参页面刷新参数丢失问题解决方案
2019/10/08 Javascript
JavaScript闭包相关知识解析
2019/10/19 Javascript
React Hooks 实现和由来以及解决的问题详解
2020/01/17 Javascript
JS Thunk 函数的含义和用法实例总结
2020/04/08 Javascript
vue通过接口直接下载java生成好的Excel表格案例
2020/10/26 Javascript
[56:01]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 Effect vs EG
2018/03/31 DOTA
django js实现部分页面刷新的示例代码
2018/05/28 Python
python检索特定内容的文本文件实例
2018/06/05 Python
NumPy 数学函数及代数运算的实现代码
2018/07/18 Python
python 计算一个字符串中所有数字的和实例
2019/06/11 Python
快速解决Django关闭Debug模式无法加载media图片与static静态文件
2020/04/07 Python
Python钉钉报警及Zabbix集成钉钉报警的示例代码
2020/08/17 Python
python各种excel写入方式的速度对比
2020/11/10 Python
音乐兴趣小组活动总结
2014/07/07 职场文书
乡镇民主生活会发言材料
2014/10/20 职场文书
鼋头渚导游词
2015/02/05 职场文书
初中语文教师研修日志
2015/11/13 职场文书
2016年习总书记讲话学习心得体会
2016/01/20 职场文书
2019年“我为祖国点赞”演讲稿(3篇)
2019/09/26 职场文书
100句拼搏进取的名言警句,值得一读!
2019/10/07 职场文书
手写实现JS中的new
2021/11/07 Javascript
MySQL分区以及建索引的方法总结
2022/04/13 MySQL