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 相关文章推荐
仅IE不支持setTimeout/setInterval函数的第三个以上参数
May 25 Javascript
JavaScript中的原型和继承详解(图文)
Jul 18 Javascript
jQuery中replaceWith()方法用法实例
Dec 25 Javascript
jQuery实现拖拽效果插件的方法
Mar 23 Javascript
javascript实现动态标签云
Oct 16 Javascript
js拖拽的原型声明和用法总结
Apr 04 Javascript
JS实现获取来自百度,Google,soso,sogou关键词的方法
Dec 21 Javascript
AngularJS之自定义服务详解(factory、service、provider)
Apr 14 Javascript
解决layui的input独占一行的问题
Sep 10 Javascript
jQuery实现轮播图源码
Oct 23 jQuery
jquery实现简单自动轮播图效果
Jul 29 jQuery
一篇文章了解正则表达式的替换技巧
Feb 24 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 @ at 记号的作用示例介绍
2014/10/10 PHP
9个比较实用的php代码片段
2016/03/15 PHP
JsDom 编程小结
2011/08/09 Javascript
最简单的js图片切换效果实现代码
2011/09/24 Javascript
jQuery写的日历(包括日历的样式及功能)
2013/04/23 Javascript
JQuery判断HTML元素是否存在的两种解决方法
2013/12/26 Javascript
IE中的File域无法清空使用jQuery重设File域
2014/04/24 Javascript
js中unicode转码方法详解
2015/10/09 Javascript
jQuery fadeOut 异步实例代码详解
2016/08/18 Javascript
JavaScript类的写法
2016/09/17 Javascript
AngularJS实现ajax请求的方法
2016/11/22 Javascript
Centos6.8下Node.js安装教程
2017/05/12 Javascript
Vue Spa切换页面时更改标题的实例代码
2017/07/15 Javascript
浅析JS中什么是自定义react数据验证组件
2018/10/19 Javascript
详解vuex之store拆分即多模块状态管理(modules)篇
2018/11/13 Javascript
JavaScript JMap类定义与使用方法示例
2019/01/22 Javascript
详解jQuery如何实现模糊搜索
2019/05/10 jQuery
layui实现数据表格点击搜索功能
2020/03/26 Javascript
Vue.js自定义指令学习使用详解
2019/10/19 Javascript
Vue 中如何将函数作为 props 传递给组件的实现代码
2020/05/12 Javascript
vue使用lodop打印控件实现浏览器兼容打印的方法
2021/02/07 Vue.js
Python中针对函数处理的特殊方法
2014/03/06 Python
python通过字典dict判断指定键值是否存在的方法
2015/03/21 Python
详解Python中的type和object
2018/08/15 Python
python 中文件输入输出及os模块对文件系统的操作方法
2018/08/27 Python
Python将string转换到float的实例方法
2019/07/29 Python
wxPython实现画图板
2020/08/27 Python
Django在Model保存前记录日志实例
2020/05/14 Python
HTML高亮关键字的实现代码
2018/10/22 HTML / CSS
可能这些是你想要的H5软键盘兼容方案(小结)
2019/04/23 HTML / CSS
Weblogc domain问题
2014/01/27 面试题
自动化专业个人求职信范文
2013/11/29 职场文书
保密工作实施方案
2014/02/24 职场文书
三方协议书范本
2014/04/22 职场文书
幼师大班个人总结
2015/02/13 职场文书
浅谈Python类的单继承相关知识
2021/05/12 Python