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实现的鼠标经过时播放声音
May 18 Javascript
如何在指定的地方插入html内容和文本内容
Dec 23 Javascript
JS辨别访问浏览器判断是android还是ios系统
Aug 19 Javascript
jQuery中trigger()方法用法实例
Jan 19 Javascript
Bootstrap每天必学之滚动监听
Mar 16 Javascript
原生js实现手风琴功能(支持横纵向调用)
Jan 13 Javascript
jQuery图片瀑布流的简单实现代码
Mar 15 Javascript
node.js环境搭建图文详解
Sep 19 Javascript
Vue实现移动端左右滑动效果的方法
Nov 27 Javascript
详解Node.js一行命令上传本地文件到服务器
Apr 22 Javascript
JS代码屏蔽F12,右键,粘贴,复制,剪切,选中,操作实例
Sep 17 Javascript
如何用JavaScript学习算法复杂度
Apr 30 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远程连接MYSQL数据库非常慢的解决方法
2008/07/05 PHP
php数据库备份还原类分享
2014/03/20 PHP
ThinkPHP实现跨模块调用操作方法概述
2014/06/20 PHP
php循环table实现一行两列显示的方法
2015/06/04 PHP
PHP实现对png图像进行缩放的方法(支持透明背景)
2015/07/15 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
2019/08/03 PHP
利用javascript的面向对象的特性实现限制试用期
2011/08/04 Javascript
打造个性化的功能强大的Jquery虚拟键盘(VirtualKeyboard)
2014/10/11 Javascript
ECharts仪表盘实例代码(附源码下载)
2016/02/18 Javascript
JS动态给对象添加事件的简单方法
2016/07/19 Javascript
AngularJS实现树形结构(ztree)菜单示例代码
2016/09/18 Javascript
详解iview的checkbox多选框全选时校验问题
2019/06/10 Javascript
vue-cli3中配置alias和打包加hash值操作
2020/09/04 Javascript
vue 动态添加class,三个以上的条件做判断方式
2020/11/02 Javascript
Python实现多行注释的另类方法
2014/08/22 Python
跟老齐学Python之私有函数和专有方法
2014/10/24 Python
用Python进行一些简单的自然语言处理的教程
2015/03/31 Python
Python实现嵌套列表及字典并按某一元素去重复功能示例
2017/11/30 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
2018/09/19 Python
使用Python制作简单的小程序IP查看器功能
2019/04/16 Python
PyQt5 在label显示的图片中绘制矩形的方法
2019/06/17 Python
选择Python写网络爬虫的优势和理由
2019/07/07 Python
Python3列表List入门知识附实例
2020/02/09 Python
Python3.6 + TensorFlow 安装配置图文教程(Windows 64 bit)
2020/02/24 Python
keras-siamese用自己的数据集实现详解
2020/06/10 Python
html5简介_动力节点Java学院整理
2017/07/07 HTML / CSS
Sperry官网:帆船鞋创始品牌
2016/09/07 全球购物
FC-Moto西班牙:摩托车手最大的购物场所之一
2019/04/11 全球购物
枚举与#define宏的区别
2014/04/30 面试题
介绍一下write命令
2014/08/10 面试题
英语专业学子个人的自我评价
2013/10/02 职场文书
年检委托书
2014/08/30 职场文书
法定授权委托证明书
2014/09/27 职场文书
应届生简历自我评价
2015/03/11 职场文书
MySQL磁盘碎片整理实例演示
2022/04/03 MySQL
本地搭建minio文件服务器(使用bat脚本启动)的方法
2022/07/15 Servers