Javascript中实现String.startsWith和endsWith方法


Posted in Javascript onJune 10, 2015

在操作字符串(String)类型的时候,startsWith(anotherString)和endsWith(anotherString)是非常好用的方法。其中startsWith判断当前字符串是否以anotherString作为开头,而endsWith则是判断是否作为结尾。举例:

"abcd".startsWith("ab"); // true
"abcd".startsWith("bc"); // false
"abcd".endsWith("cd");  // true
"abcd".endsWith("e");  // false
"a".startsWith("a");   // true
"a".endsWith("a");    // true

但不幸的是,Javascript中没有自带这两个方法,需要的话只能自己写。当然写起来也不难就是了。

if (typeof String.prototype.startsWith != 'function') {
 String.prototype.startsWith = function (prefix){
  return this.slice(0, prefix.length) === prefix;
 };
}

String.slice()和String.substring()类似,都是获得一段子串,但有评测说slice的效率更高。这里不使用indexOf()的原因是,indexOf会扫描整个字符串,如果字符串很长,indexOf的效率就会很差。

if (typeof String.prototype.endsWith != 'function') {
 String.prototype.endsWith = function(suffix) {
  return this.indexOf(suffix, this.length - suffix.length) !== -1;
 };
}

和startsWith不一样,endsWith中可以使用indexOf。原因是它只扫描了最后的一段字符串,而比起slice的优势是它不用复制字符串,直接扫描即可,所以效率更高。

Javascript 相关文章推荐
TinyMCE 新增本地图片上传功能
Nov 05 Javascript
Jquery对象和Dom对象的区别分析
Nov 20 Javascript
仅9张思维导图帮你轻松学习Javascript 就这么简单
Jun 01 Javascript
浅谈Node.js ORM框架Sequlize之表间关系
Jul 24 Javascript
vue+webpack 打包文件 404 页面空白的解决方法
Feb 28 Javascript
vscode中vue-cli项目es-lint的配置方法
Jul 30 Javascript
浅析vue 函数配置项watch及函数 $watch 源码分享
Nov 22 Javascript
超详细的5个Shell脚本实例分享(值得收藏)
Aug 15 Javascript
vue输入节流,避免实时请求接口的实例代码
Oct 30 Javascript
node.js中fs文件系统模块的使用方法实例详解
Feb 13 Javascript
javascript实现前端成语点击验证
Jun 24 Javascript
用javascript实现倒计时效果
Feb 09 Javascript
Javascript中判断对象是否为空
Jun 10 #Javascript
javascript事件委托的方式绑定详解
Jun 10 #Javascript
个人总结的一些JavaScript技巧、实用函数、简洁方法、编程细节
Jun 10 #Javascript
浅析JavaScript动画
Jun 10 #Javascript
JavaScript操作XML文件之XML读取方法
Jun 09 #Javascript
JavaScript检查数字是否为整数或浮点数的方法
Jun 09 #Javascript
jQuery取消ajax请求的方法
Jun 09 #Javascript
You might like
怎样在UNIX系统下安装MySQL
2006/10/09 PHP
PHP 上传文件的方法(类)
2009/07/30 PHP
利用PHP实现智能文件类型检测的实现代码
2011/08/02 PHP
1亿条数据如何分表100张到Mysql数据库中(PHP)
2015/07/29 PHP
分享五个PHP7性能优化提升技巧
2015/12/07 PHP
jquery 必填项判断表单是否为空的方法
2008/09/14 Javascript
IE和Firefox的Javascript兼容性总结[推荐收藏]
2011/10/19 Javascript
jQuery多级手风琴菜单实例讲解
2015/10/22 Javascript
AngularJs ng-repeat 嵌套如何获取外层$index
2016/09/21 Javascript
bootstrap时间插件daterangepicker使用详解
2017/10/19 Javascript
NW.js 简介与使用方法
2018/02/01 Javascript
Vue.js中的computed工作原理
2018/03/22 Javascript
详解单页面路由工程使用微信分享及二次分享解决方案
2019/02/22 Javascript
vue在图片上传的时候压缩图片
2020/11/18 Vue.js
[05:48]DOTA2英雄梦之声vol21 屠夫
2014/06/20 DOTA
[02:31]2018年度DOTA2最具人气选手-完美盛典
2018/12/16 DOTA
Python多线程编程(七):使用Condition实现复杂同步
2015/04/05 Python
详解Python迭代和迭代器
2016/03/28 Python
python去除文件中空格、Tab及回车的方法
2016/04/12 Python
Python按照list dict key进行排序过程解析
2020/04/04 Python
HTML5中的Web Notification桌面右下角通知功能的实现
2018/04/19 HTML / CSS
银行财务部实习生的自我鉴定
2013/11/27 职场文书
经典大学生求职信范文
2014/01/06 职场文书
财务部副经理岗位职责
2014/03/14 职场文书
大学英语演讲稿范文
2014/04/24 职场文书
入职担保书怎么写
2014/05/12 职场文书
歌颂党的演讲稿
2014/09/10 职场文书
教师党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
党的群众路线教育实践活动个人对照检查材料(医生)
2014/11/05 职场文书
校长师德表现自我评价
2015/03/05 职场文书
2015年超市工作总结
2015/04/09 职场文书
2015年九一八事变纪念活动实施方案
2015/05/06 职场文书
初中政教处工作总结
2015/08/12 职场文书
2016年中秋节慰问信
2015/12/01 职场文书
敬业奉献模范事迹材料(2016精选版)
2016/02/26 职场文书
排查Tomcat进程假死的问题
2022/05/06 Servers