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 表格排序和表头浮动效果(扩展SortTable)
Apr 07 Javascript
javascript中的关于类型转换的性能优化
Dec 14 Javascript
原生Js实现按的数据源均分时间点幻灯片效果(已封装)
Dec 28 Javascript
IE6/7 and IE8/9/10(IE7模式)依次隐藏具有absolute或relative的父元素和子元素后再显示父元素
Jul 31 Javascript
js函数的延迟加载实现代码
Oct 11 Javascript
javascript生成json数据简单示例分享
Feb 14 Javascript
javascript实现获取浏览器版本、操作系统类型
Jan 29 Javascript
jquery图形密码实现方法
Mar 11 Javascript
基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
Dec 24 Javascript
通过正则表达式获取url中参数的简单实现
Jun 07 Javascript
vue-cli+webpack在生成的项目中使用bootstrap实例代码
May 26 Javascript
vue路由懒加载的实现方法
Mar 12 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
The specified CGI application misbehaved by not returning a complete set of HTTP headers
2011/03/31 PHP
destoon常用的安全设置概述
2014/06/21 PHP
PHP使用pcntl_fork实现多进程下载图片的方法
2014/12/16 PHP
自定义min版smarty模板引擎MinSmarty.class.php文件及用法
2016/05/20 PHP
详解Yaf框架PHPUnit集成测试方法
2017/12/27 PHP
PHP asXML()函数讲解
2019/02/03 PHP
PHP实现带进度条的Ajax文件上传功能示例
2019/07/02 PHP
JavaScript实现url地址自动检测并添加URL链接示例代码
2013/11/12 Javascript
怎么判断js脚本加载完成
2014/02/28 Javascript
自己封装的javascript事件队列函数版
2014/06/12 Javascript
picLazyLoad 实现图片延时加载(包含背景图片)
2016/07/21 Javascript
requirejs按需加载angularjs文件实例
2017/06/08 Javascript
bootstrap可编辑下拉框jquery.editable-select
2017/10/12 jQuery
Angular浏览器插件Batarang介绍及使用
2018/02/07 Javascript
VUE+Element UI实现简单的表格行内编辑效果的示例的代码
2018/10/31 Javascript
详解VUE Element-UI多级菜单动态渲染的组件
2019/04/25 Javascript
Vue 幸运大转盘实现思路详解
2019/05/06 Javascript
JavaScript indexOf()原理及使用方法详解
2020/07/09 Javascript
Nest.js散列与加密实例详解
2021/02/24 Javascript
使用Python抓取模板之家的CSS模板
2015/03/16 Python
Python 200行代码实现一个滑动验证码过程详解
2019/07/11 Python
使用python绘制二维图形示例
2019/11/22 Python
Python 实现数组相减示例
2019/12/27 Python
Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的
2020/04/20 Python
使用Python3 poplib模块删除服务器多天前的邮件实现代码
2020/04/24 Python
html5时钟实现代码
2010/10/22 HTML / CSS
html5中canvas学习笔记1-画板的尺寸与实际显示尺寸
2013/01/06 HTML / CSS
Html5元素及基本语法详解
2016/08/02 HTML / CSS
党的群众路线教育实践活动宣传标语口号
2014/06/06 职场文书
二人合伙经营协议书
2014/09/13 职场文书
行政执法作风整顿剖析材料
2014/10/11 职场文书
网络营销计划书
2015/01/17 职场文书
优秀大学生自荐信
2015/03/26 职场文书
2015年中职班主任工作总结
2015/05/25 职场文书
钢琴师观后感
2015/06/12 职场文书
OpenCV实现普通阈值
2021/11/17 Java/Android