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 相关文章推荐
javascript+iframe 实现无刷新载入整页的代码
Mar 17 Javascript
网络图片延迟加载实现代码 超越jquery控件
Mar 27 Javascript
一行代码告别document.getElementById
Jun 01 Javascript
Node.js事件驱动
Jun 18 Javascript
举例详解AngularJS中ngShow和ngHide的使用方法
Jun 19 Javascript
jQuery 遍历函数详解
Jul 05 Javascript
jQuery焦点图轮播特效代码分享(3款)
Sep 05 Javascript
jquery移除了live()、die(),新版事件绑定on()、off()的方法
Oct 26 Javascript
vue使用代理解决请求跨域问题详解
Jul 24 Javascript
Nuxt使用Vuex的方法示例
Sep 06 Javascript
js实现图片实时时钟
Jan 15 Javascript
用jQuery实现抽奖程序
Apr 12 jQuery
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
php基于socket实现SMTP发送邮件的方法
2015/03/05 PHP
分享php多功能图片处理类
2016/05/15 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
JS的框架Polymer中的dom-if和is属性使用说明
2015/07/29 Javascript
JavaScript子窗口调用父窗口变量和函数的方法
2015/10/09 Javascript
基于MVC方式实现三级联动(JavaScript)
2017/01/23 Javascript
JS获取本周周一,周末及获取任意时间的周一周末功能示例
2017/02/09 Javascript
AngularJS页面带参跳转及参数解析操作示例
2017/06/28 Javascript
bootstrap是什么_动力节点Java学院整理
2017/07/14 Javascript
OkHttp踩坑随笔为何 response.body().string() 只能调用一次
2018/01/08 Javascript
修改npm全局安装模式的路径方法
2018/05/15 Javascript
vue+axios 前端实现登录拦截的两种方式(路由拦截、http拦截)
2018/10/24 Javascript
uni-app如何实现增量更新功能
2020/01/03 Javascript
微信小程序scroll-view的滚动条设置实现
2020/03/02 Javascript
javascript设计模式 ? 访问者模式原理与用法实例分析
2020/04/26 Javascript
基于Vue全局组件与局部组件的区别说明
2020/08/11 Javascript
[01:26]神话结束了,却也刚刚开始——DOTA2新英雄玛尔斯驾临战场
2019/03/10 DOTA
[45:16]完美世界DOTA2联赛PWL S3 Magma vs Phoenix 第一场 12.12
2020/12/16 DOTA
Python时间获取及转换知识汇总
2017/01/11 Python
Python这样操作能存储100多万行的xlsx文件
2019/04/16 Python
Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析
2020/03/23 Python
M1芯片安装python3.9.1的实现
2021/02/02 Python
html5构建触屏网站之网站尺寸探讨
2013/01/07 HTML / CSS
美国和加拿大计算机和电子产品购物网站:TigerDirect.com
2019/09/13 全球购物
《花的勇气》教后反思
2014/02/12 职场文书
财务负责人任命书
2014/06/06 职场文书
含预算的公司户外活动方案
2014/08/16 职场文书
社团活动总结格式
2014/08/29 职场文书
2014向国旗敬礼网上签名活动总结
2014/09/27 职场文书
2014小学数学教师个人工作总结
2014/12/18 职场文书
龙潭大峡谷导游词
2015/02/10 职场文书
2016廉政教育学习心得体会
2016/01/25 职场文书
南阳市白酒市场的调查报告
2019/11/08 职场文书
详解CSS3.0(Cascading Style Sheet) 层叠级联样式表
2021/07/16 HTML / CSS
Mybatis-plus配置分页插件返回统一结果集
2022/06/21 Java/Android
Mysql中mvcc各场景理解应用
2022/08/05 MySQL