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静态的动态
Sep 18 Javascript
摘自启点的main.js
Apr 20 Javascript
js判断60秒以及倒计时示例代码
Jan 24 Javascript
基于javascript的JSON格式页面展示美化方法
Jul 02 Javascript
Javascript中设置默认参数值示例
Sep 11 Javascript
js如何实现淡入淡出效果
Nov 18 Javascript
JavaScript 轮播图和自定义滚动条配合鼠标滚轮分享代码贴
Oct 28 Javascript
Sortable.js拖拽排序使用方法解析
Nov 04 Javascript
angular的输入和输出的使用方法
Sep 22 Javascript
在Vue项目中使用snapshot测试的具体使用
Apr 16 Javascript
简单了解JavaScript中常见的反模式
Jun 21 Javascript
js实现计算器功能
Aug 10 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投票程序源码
2007/03/11 PHP
php mysql数据库操作类
2008/06/04 PHP
phpmyadmin 常用选项设置详解版
2010/03/07 PHP
PHP生成二维码的两个方法和实例
2014/07/01 PHP
document.all与WEB标准
2020/05/13 Javascript
javascript 日期时间函数(经典+完善+实用)
2009/05/27 Javascript
JQuery 引发两次$(document.ready)事件
2010/01/15 Javascript
比较新旧两个数组值得增加和删除的JS代码
2013/10/30 Javascript
JavaScript字符串对象toLowerCase方法入门实例(用于把字母转换为小写)
2014/10/17 Javascript
Bootstrap零基础入门教程(二)
2016/07/18 Javascript
js实现右键自定义菜单
2016/12/03 Javascript
JS正则表达式验证账号、手机号、电话和邮箱是否合法
2017/03/08 Javascript
使用 Javascript 实现浏览器推送提醒功能的示例
2017/11/03 Javascript
微信小程序自定义prompt组件步骤详解
2018/06/12 Javascript
vue中v-text / v-html使用实例代码详解
2019/04/02 Javascript
JavaScript命名空间模式实例详解
2019/06/20 Javascript
JS中this的4种绑定规则详解
2020/02/04 Javascript
[53:15]Newbee vs Pain 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python合并文本文件示例
2014/02/07 Python
Python检测字符串中是否包含某字符集合中的字符
2015/05/21 Python
python中pandas.DataFrame排除特定行方法示例
2017/03/12 Python
浅谈Python2、Python3相对路径、绝对路径导入方法
2018/06/22 Python
python执行scp命令拷贝文件及文件夹到远程主机的目录方法
2019/07/08 Python
基于Tensorflow的MNIST手写数字识别分类
2020/06/17 Python
python和php哪个容易学
2020/06/19 Python
Django多数据库联用实现方法解析
2020/11/12 Python
css3实现六边形边框的实例代码
2019/05/24 HTML / CSS
遮罩层 + Iframe实现界面自动显示的示例代码
2020/04/26 HTML / CSS
毕业生求职找工作的自我评价范文
2013/11/27 职场文书
小学生环保标语
2014/06/13 职场文书
售后客服工作职责
2014/06/16 职场文书
服装设计专业自荐信
2014/06/17 职场文书
竞聘报告优秀范文
2014/11/06 职场文书
小班教师个人总结
2015/02/05 职场文书
学校2015年纠风工作总结
2015/05/15 职场文书
用CSS3画一个爱心
2021/04/27 HTML / CSS