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 相关文章推荐
禁止js文件缓存的代码
Apr 09 Javascript
Jquery 动态添加按钮实现代码
May 06 Javascript
通过jQuery打造支持汉字,拼音,英文快速定位查询的超级select插件
Jun 18 Javascript
JavaScript使用cookie记录临时访客信息的方法
Apr 07 Javascript
延时加载JavaScript代码提高速度
Dec 27 Javascript
vue从使用到源码实现教程详解
Sep 19 Javascript
html5 canvas 详细使用教程
Jan 20 Javascript
jQuery EasyUI ProgressBar进度条组件
Feb 28 Javascript
vue.js框架实现表单排序和分页效果
Aug 09 Javascript
禁止弹窗中蒙层底部页面跟随滚动的几种方法
Dec 07 Javascript
CKEditor4配置与开发详细中文说明文档
Oct 08 Javascript
angularJs自定义过滤器实现手机号信息隐藏的方法
Oct 08 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
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
2019/12/31 PHP
文本框根据输入内容自适应高度的代码
2011/10/24 Javascript
jQuery实现form表单reset按钮重置清空表单功能
2012/12/18 Javascript
JS:window.onload的使用介绍
2013/11/13 Javascript
浅析jquery的作用与优势
2013/12/02 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
2014/02/22 Javascript
jQuery瀑布流插件Wookmark使用实例
2014/04/02 Javascript
一个通过script自定义属性传递配置参数的方法
2014/09/15 Javascript
限制文本框只能输入数字||只能是数字和小数点||只能是整数和浮点数
2016/05/27 Javascript
JS对大量数据进行多重过滤的方法
2016/11/04 Javascript
基于JavaScript实现右键菜单和拖拽功能
2016/11/28 Javascript
使用jQuery的ajax方法向服务器发出get和post请求的方法
2017/01/13 Javascript
Angular如何引入第三方库的方法详解
2017/07/13 Javascript
探索webpack模块及webpack3新特性
2017/09/18 Javascript
Popup弹出框添加数据实现方法
2017/10/27 Javascript
ES6 javascript中class静态方法、属性与实例属性用法示例
2017/10/30 Javascript
vue实现tab切换外加样式切换方法
2018/03/16 Javascript
vue+axios+mock.js环境搭建的方法步骤
2018/08/28 Javascript
微信小程序批量上传图片到七牛(推荐)
2019/12/19 Javascript
[01:22:10]Ti4 循环赛第二日 DK vs Empire
2014/07/11 DOTA
在类Unix系统上开始Python3编程入门
2015/08/20 Python
Python中断言Assertion的一些改进方案
2016/10/27 Python
Python 基础知识之字符串处理
2017/01/06 Python
Python使用字典的嵌套功能详解
2019/02/27 Python
Python实现搜索算法的实例代码
2020/01/02 Python
python实现交并比IOU教程
2020/04/16 Python
Python更换pip源方法过程解析
2020/05/19 Python
python中PyQuery库用法分享
2021/01/15 Python
英国女性时尚鞋类的潮流制造者:Koi Footwear
2018/10/19 全球购物
新闻专业本科生的自我评价分享
2013/11/20 职场文书
关于是否需要写商业计划书
2014/02/07 职场文书
股份转让协议书
2014/04/12 职场文书
运动会主持词大全
2015/07/02 职场文书
python实现高效的遗传算法
2021/04/07 Python
JS轻量级函数式编程实现XDM二
2022/06/16 Javascript
GoFrame框架数据校验之校验结果Error接口对象
2022/06/21 Golang