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 相关文章推荐
div移动 输入框不能输入的问题
Nov 19 Javascript
6款新颖的jQuery和CSS3进度条插件推荐
Mar 05 Javascript
邮箱下拉自动填充选择示例代码附图
Apr 03 Javascript
jquery中radio checked问题
Mar 16 Javascript
详解Javascript事件驱动编程
Jan 03 Javascript
个人网站留言页面(前端jQuery编写、后台php读写MySQL)
May 03 Javascript
JS简单判断滚动条的滚动方向实现方法
Apr 28 Javascript
纯JS实现简单的日历
Jun 26 Javascript
vue中改变选中当前项的显示隐藏或者状态的实现方法
Feb 08 Javascript
React+Antd+Redux实现待办事件的方法
Mar 14 Javascript
Vue 技巧之控制父类的 slot
Feb 24 Javascript
vue 点击其他区域关闭自定义div操作
Jul 17 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
短波的认识
2021/03/01 无线电
PHP4实际应用经验篇(1)
2006/10/09 PHP
php preg_replace替换实例讲解
2013/11/04 PHP
php中session过期时间设置及session回收机制介绍
2014/05/05 PHP
PHP常用正则表达式集锦
2014/08/17 PHP
PHP云打印类完整示例
2016/10/15 PHP
thinkphp5.1框架模板赋值与变量输出示例
2020/05/25 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
2020/08/17 PHP
JavaScript 函数调用规则
2009/09/14 Javascript
JQuery Tab选项卡效果代码改进版
2010/04/01 Javascript
Jquery之Ajax运用 学习运用篇
2011/09/26 Javascript
jQuery cdn使用介绍
2013/05/08 Javascript
Node.js编码规范
2014/07/14 Javascript
Eclipse配置Javascript开发环境图文教程
2015/01/29 Javascript
跟我学习javascript的arguments对象
2015/11/16 Javascript
巧方法 JavaScript获取超链接的绝对URL地址
2016/06/14 Javascript
Google 地图事件实例讲解
2016/08/06 Javascript
深入理解JavaScript中的尾调用(Tail Call)
2017/02/07 Javascript
bootstrap table实现双击可编辑、添加、删除行功能
2017/09/27 Javascript
微信小程序实现刷脸登录
2018/05/25 Javascript
详解react native页面间传递数据的几种方式
2018/11/07 Javascript
element-ui 中使用upload多文件上传只请求一次接口
2019/07/19 Javascript
深度解读vue-resize的具体用法
2020/07/08 Javascript
python去掉字符串中重复字符的方法
2014/02/27 Python
python实现剪切功能
2019/01/23 Python
linux环境中没有网络怎么下载python
2019/07/07 Python
python bluetooth蓝牙信息获取蓝牙设备类型的方法
2019/11/29 Python
解决tensorboard多个events文件显示紊乱的问题
2020/02/15 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
2020/02/28 Python
通过代码实例了解Python sys模块
2020/09/14 Python
微信小程序“圣诞帽”的实现思路详解
2017/12/28 HTML / CSS
荷兰最大的鞋子、服装和运动折扣店:Bristol
2021/01/07 全球购物
MYSQL支持事务吗
2013/08/09 面试题
大学生自我评价怎样写好
2013/10/23 职场文书
我的画教学反思
2014/04/28 职场文书
医生行业员工的辞职信
2019/06/24 职场文书