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 判断浏览器是否支持SVG的代码
Mar 21 Javascript
jquery mobile changepage的三种传参方法介绍
Sep 13 Javascript
jQuery基础的工厂函数以及定时器的经典实例分析
May 20 Javascript
jquery.form.js框架实现文件上传功能案例解析(springmvc)
May 26 Javascript
Angular 应用技巧总结
Sep 14 Javascript
JavaScript中利用for循环遍历数组
Jan 15 Javascript
解决LayUI表单获取不到data的问题
Aug 20 Javascript
BootStrap modal实现拖拽功能
Dec 01 Javascript
如何在Vue中使用CleaveJS格式化你的输入内容
Dec 14 Javascript
JS使用canvas中的measureText方法测量字体宽度示例
Feb 02 Javascript
layui实现图片虚拟路径上传,预览和删除的例子
Sep 25 Javascript
解决echarts echarts数据动态更新和dataZoom被重置问题
Jul 20 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
SONY ICF-SW7600的电路分析
2021/03/02 无线电
PHP计算加权平均数的方法
2015/07/16 PHP
PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF
2016/02/19 PHP
JQuery 选择器 xpath 语法应用
2010/05/13 Javascript
JS 自定义带默认值的函数
2011/07/21 Javascript
调试Node.JS的辅助工具(NodeWatcher)
2012/01/04 Javascript
js实现人才网站职位选择功能的方法
2015/08/14 Javascript
JS+CSS实现的日本门户网站经典选项卡导航效果
2015/09/27 Javascript
基于JavaScript实现单选框下拉菜单添加文件效果
2016/06/26 Javascript
微信小程序的动画效果详解
2017/01/18 Javascript
VueJs组件之父子通讯的方式
2018/05/06 Javascript
webstorm添加*.vue文件支持
2018/05/08 Javascript
微信小程序url传参写变量的方法
2018/08/09 Javascript
详解CommonJS和ES6模块循环加载处理的区别
2018/12/26 Javascript
利用Electron简单撸一个Markdown编辑器的方法
2019/06/10 Javascript
VUEX 数据持久化,刷新后重新获取的例子
2019/11/12 Javascript
nodejs+koa2 实现模仿springMVC框架
2020/10/21 NodeJs
python 爬虫 批量获取代理ip的实例代码
2018/05/22 Python
python numpy中cumsum的用法详解
2019/10/17 Python
python super用法及原理详解
2020/01/20 Python
Python cookie的保存与读取、SSL讲解
2020/02/17 Python
Autopep8的使用(python自动编排工具)
2021/03/02 Python
纯CSS3代码实现文字描边
2016/04/25 HTML / CSS
HTML5和CSS3实例教程总结(推荐)
2016/07/18 HTML / CSS
浅析HTML5:'data-'属性的作用
2018/01/23 HTML / CSS
美国著名的婴儿学步鞋老品牌:Robeez
2016/08/20 全球购物
Alba Moda瑞士网上商店:独家意大利时尚女装销售
2016/11/28 全球购物
英智兴达软件测试笔试题
2016/10/12 面试题
do you have any Best Practice for testing
2016/06/04 面试题
毕业生自荐信的主要内容
2013/10/29 职场文书
《最佳路径》教学反思
2014/04/13 职场文书
班级文化标语
2014/06/23 职场文书
国际会计专业求职信
2014/08/04 职场文书
个人委托函范文
2015/01/29 职场文书
与死神共舞观后感
2015/06/15 职场文书
python中的getter与setter你了解吗
2022/03/24 Python