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 相关文章推荐
翻译整理的jQuery使用查询手册
Mar 07 Javascript
使用jquery实现图文切换效果另加特效
Jan 20 Javascript
在javascript中如何得到中英文混合字符串的长度
Jan 17 Javascript
JavaScript字符串对象的concat方法实例(用于连接两个或多个字符串)
Oct 16 Javascript
浅谈JavaScript的Polymer框架中的事件绑定
Jul 29 Javascript
jQuery实现表格奇偶行显示不同背景色 就这么简单
Mar 13 Javascript
arcgis for js栅格图层叠加(Raster Layer)问题
Nov 22 Javascript
vue better scroll 无法滚动的解决方法
Jun 07 Javascript
详解如何模拟实现node中的Events模块(通俗易懂版)
Apr 15 Javascript
JavaScript创建表格的方法
Apr 13 Javascript
vue a标签点击实现赋值方式
Sep 07 Javascript
vue移动端写的拖拽功能示例代码
Sep 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
PHP版自动生成文章摘要
2008/07/23 PHP
php中常用的预定义变量小结
2012/05/09 PHP
php中base64_decode与base64_encode加密解密函数实例
2014/11/24 PHP
php简单实现MVC
2015/02/05 PHP
PHP结合Vue实现滚动底部加载效果
2017/12/17 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
JavaScript 组件之旅(一)分析和设计
2009/10/28 Javascript
基于jquery的多功能软键盘插件
2012/07/25 Javascript
javascript 图片裁剪技巧解读
2012/11/15 Javascript
用JavaScript获取DOM元素位置和尺寸大小的方法
2013/04/12 Javascript
JQuery实现防止退格键返回的方法
2015/02/12 Javascript
JavaScript跨平台的开源框架NativeScript
2015/03/24 Javascript
第二次聊一聊JS require.js模块化工具的基础知识
2016/04/17 Javascript
js实现带三角符的手风琴效果
2017/03/01 Javascript
Javascript中字符串相关常用的使用方法总结
2017/03/13 Javascript
vue项目实现表单登录页保存账号和密码到cookie功能
2018/08/31 Javascript
vue中$nextTick的用法讲解
2019/01/17 Javascript
JavaScript碎片—函数闭包(模拟面向对象)
2019/03/13 Javascript
vue设置全局访问接口API地址操作
2020/08/14 Javascript
原生js实现自定义滚动条
2021/01/20 Javascript
Python 列表list使用介绍
2014/11/30 Python
在GitHub Pages上使用Pelican搭建博客的教程
2015/04/25 Python
Python 实现Windows开机运行某软件的方法
2018/10/14 Python
Python pycharm 同时加载多个项目的方法
2019/01/17 Python
Python实现的在特定目录下导入模块功能分析
2019/02/11 Python
python加载自定义词典实例
2019/12/06 Python
python pyecharts 实现一个文件绘制多张图
2020/05/13 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
2020/07/07 Python
python3爬虫中异步协程的用法
2020/07/10 Python
GUESS盖尔斯法国官网:美国时尚品牌
2016/09/23 全球购物
中学生演讲稿
2014/04/26 职场文书
产品销售计划书
2014/05/04 职场文书
小学竞选班长演讲稿
2014/09/09 职场文书
教育教学读书笔记
2015/07/02 职场文书
浅谈Redis的keys命令到底有多慢
2021/10/05 Redis
Python 正则模块详情
2021/11/02 Python