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 相关文章推荐
js过滤HTML标签以及空格的思路及代码
May 24 Javascript
window.onresize 多次触发的解决方法
Nov 08 Javascript
JavaScript改变CSS样式的方法汇总
May 07 Javascript
简述AngularJS的控制器的使用
Jun 16 Javascript
js验证真实姓名与身份证号是否匹配
Oct 13 Javascript
JavaScript基于原型链的继承
Jun 22 Javascript
利用ES6语法重构React组件详解
Mar 02 Javascript
JS中使用textPath实现线条上的文字
Dec 25 Javascript
vue使用监听实现全选反选功能
Jul 06 Javascript
Angularjs中date过滤器失效的问题及解决方法
Jul 06 Javascript
微信小程序常用赋值方法小结
Apr 30 Javascript
VUE解决跨域问题Access to XMLHttpRequest at
May 06 Vue.js
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
Thinkphp事务操作实例(推荐)
2017/04/01 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
setInterval 和 setTimeout会产生内存溢出
2008/02/15 Javascript
JavaScript字符串对象substr方法入门实例(用于截取字符串)
2014/10/16 Javascript
JS实现仿雅虎首页快捷登录入口及导航模块效果
2015/09/19 Javascript
JavaScript引用类型和基本类型详解
2016/01/06 Javascript
JavaScript截取、切割字符串的技巧
2016/01/07 Javascript
理解javascript异步编程
2016/01/27 Javascript
javascript瀑布流式图片懒加载实例
2020/06/28 Javascript
轻松掌握jQuery中wrap()与unwrap()函数的用法
2016/05/24 Javascript
深入浅析JavaScript中的scrollTop
2016/07/11 Javascript
Bootstrap 下拉多选框插件Bootstrap Multiselect
2017/01/22 Javascript
JQuery查找子元素find()和遍历集合each的方法总结
2017/03/07 Javascript
简单谈谈require模块化jquery和angular的问题
2017/06/23 jQuery
浅谈vue方法内的方法使用this的问题
2018/09/15 Javascript
js html实现计算器功能
2018/11/13 Javascript
vscode+gulp轻松开发小程序的完整步骤
2020/10/18 Javascript
python实现将html表格转换成CSV文件的方法
2015/06/28 Python
浅析python中SQLAlchemy排序的一个坑
2017/02/24 Python
Python统计单词出现的次数
2018/04/04 Python
python一键去抖音视频水印工具
2018/09/14 Python
python合并已经存在的sheet数据到新sheet的方法
2018/12/11 Python
python实现定时发送qq消息
2019/01/18 Python
Python json解析库jsonpath原理及使用示例
2020/11/25 Python
纯CSS3实现圆角效果(含IE兼容解决方法)
2014/05/07 HTML / CSS
HTML5之多线程(Web Worker)
2019/01/02 HTML / CSS
Loreto Gallo英国:欧洲领先的在线药房
2021/01/21 全球购物
Linux常见面试题
2016/10/04 面试题
药学专业个人的自我评价
2013/12/31 职场文书
酒店管理专业毕业生求职自荐信
2014/04/28 职场文书
工作失职造成投诉的检讨书范文
2014/10/05 职场文书
幼儿园学前班幼儿评语
2014/12/29 职场文书
2015年小学英语教师工作总结
2015/05/12 职场文书
2019数学教师下学期工作总结
2019/06/27 职场文书
Python爬虫之爬取二手房信息
2021/04/27 Python
关于redisson缓存序列化几枚大坑说明
2021/08/04 Redis