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 封装Ajax传递的数据代码
Jun 05 Javascript
JS对img进行操作(换图片/切图/轮换/停止)
Apr 17 Javascript
js判断运行jsp页面的浏览器类型以及版本示例
Oct 30 Javascript
qq悬浮代码(兼容各个浏览器)
Jan 29 Javascript
FullCalendar日历插件应用之数据展现(一)
Dec 23 Javascript
js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)
Jan 27 Javascript
Node.js 条形码识别程序构建思路详解
Feb 14 Javascript
AJAX实现瀑布流触发分页与分页触发瀑布流的方法
May 23 Javascript
微信小程序 中wx.chooseAddress(OBJECT)实例详解
Mar 31 Javascript
vue.js之vue-cli脚手架的搭建详解
May 05 Javascript
CSS3+JavaScript实现翻页幻灯片效果
Jun 28 Javascript
Vue中Object.assign清空数据报错的解决方案
Mar 03 Vue.js
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+dbfile开发小型留言本
2006/10/09 PHP
PHPMailer安装方法及简单实例
2008/11/25 PHP
php 显示指定路径下的图片
2009/10/29 PHP
php smarty模版引擎中的缓存应用
2009/12/11 PHP
php读取txt文件并将数据插入到数据库
2016/02/23 PHP
TP5(thinkPHP5)框架基于ajax与后台数据交互操作简单示例
2018/09/03 PHP
PHP使用redis位图bitMap 实现签到功能
2019/10/08 PHP
JavaScript获取GridView中用户点击控件的行号,列号
2009/04/14 Javascript
jquery里的正则表达式说明
2011/08/03 Javascript
通过url查找a元素并点击
2014/04/09 Javascript
jQuery不兼容input的change事件问题解决过程
2014/12/05 Javascript
使用AngularJS创建自定义的过滤器的方法
2015/06/18 Javascript
jQuery+html5+css3实现圆角无刷新表单带输入验证功能代码
2015/08/21 Javascript
JavaScript创建对象的方式小结(4种方式)
2015/12/17 Javascript
AngularJS基础 ng-value 指令简单示例
2016/08/03 Javascript
ES6新特性一: let和const命令详解
2017/04/20 Javascript
JS实现元素上下左右移动效果
2017/10/18 Javascript
Vue 2.5.2下axios + express 本地请求404的解决方法
2018/02/21 Javascript
vue.js实现的绑定class操作示例
2018/07/06 Javascript
Vue自定义全局Toast和Loading的实例详解
2019/04/18 Javascript
新手简单了解vue
2019/05/29 Javascript
Vue中computed及watch区别实例解析
2020/08/01 Javascript
基于NodeJS开发钉钉回调接口实现AES-CBC加解密
2020/08/20 NodeJs
微信小程序实现天气预报功能(附源码)
2020/12/10 Javascript
python安装oracle扩展及数据库连接方法
2017/02/21 Python
Python中元组,列表,字典的区别
2017/05/21 Python
python使用opencv按一定间隔截取视频帧
2018/03/06 Python
对python .txt文件读取及数据处理方法总结
2018/04/23 Python
使用实现XlsxWriter创建Excel文件并编辑
2018/05/04 Python
Python列表原理与用法详解【创建、元素增加、删除、访问、计数、切片、遍历等】
2019/10/30 Python
史泰博(Staples)中国官方网站:办公用品一站式采购
2016/09/05 全球购物
linux面试题参考答案(8)
2016/04/19 面试题
毕业生的自我鉴定
2013/10/29 职场文书
英文求职信写作小建议
2014/02/16 职场文书
美术指导助理求职信
2014/04/20 职场文书
导游词之唐山景点
2019/12/18 职场文书