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 相关文章推荐
jquery插件开发方法(初学者)
Feb 03 Javascript
你必须知道的Javascript知识点之"深入理解作用域链"的介绍
Apr 23 Javascript
js导出table到excel同时兼容FF和IE示例
Sep 03 Javascript
JavaScript实现函数返回多个值的方法
Jun 09 Javascript
js实现微博发布小功能
Jan 12 Javascript
vue使用watch 观察路由变化,重新获取内容
Mar 08 Javascript
使用jquery datatable和bootsrap创建表格实例代码
Mar 17 Javascript
JavaScript之map reduce_动力节点Java学院整理
Jun 29 Javascript
在React中如何优雅的处理事件响应详解
Jul 24 Javascript
JavaScript ES6中的简写语法总结与使用技巧
Dec 30 Javascript
详解Vue.js 作用域、slot用法(单个slot、具名slot)
Oct 15 Javascript
JavaScript中数组去重的5种方法
Jul 04 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
处理单名多值表单的详解
2013/06/08 PHP
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
2014/04/01 PHP
用PHP代替JS玩转DOM的思路及示例代码
2014/06/15 PHP
php处理抢购类功能的高并发请求
2018/02/08 PHP
PHP $O00OO0=urldecode & eval 解密,记一次商业源码的去后门
2020/09/13 PHP
js 浮动层菜单收藏
2009/01/16 Javascript
jQuery setTimeout()函数使用方法
2013/04/07 Javascript
动态获取复选框checkbox选中个数的jquery代码
2013/06/25 Javascript
js去空格技巧分别去字符串前后、左右空格
2013/10/21 Javascript
将input file的选择的文件清空的两种解决方案
2013/10/21 Javascript
jQuery实现回车键(Enter)切换文本框焦点的代码实例
2014/05/05 Javascript
js实现div弹出层的方法
2014/11/20 Javascript
javascript中clone对象详解
2014/12/03 Javascript
jQuery实现手机号码输入提示功能实例
2015/04/30 Javascript
JavaScript中数组的22种方法必学(推荐)
2016/07/20 Javascript
Angular2-primeNG文件上传模块FileUpload使用详解
2017/01/14 Javascript
VUE实现日历组件功能
2017/03/13 Javascript
jquery.validate表单验证插件使用详解
2017/06/21 jQuery
vue router返回到指定的路由的场景分析
2020/11/10 Javascript
[01:03:03]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
[49:05]OG vs Newbee 2019DOTA2国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
删除目录下相同文件的python代码(逐级优化)
2012/05/25 Python
Python升级提示Tkinter模块找不到的解决方法
2014/08/22 Python
python进阶教程之函数参数的多种传递方法
2014/08/30 Python
简单谈谈python中的Queue与多进程
2016/08/25 Python
python基础教程之Filter使用方法
2017/01/17 Python
python实现数独游戏 java简单实现数独游戏
2018/03/30 Python
Python基于多线程操作数据库相关问题分析
2018/07/11 Python
Python实现计算图像RGB均值方式
2020/06/04 Python
Python读取二进制文件代码方法解析
2020/06/22 Python
什么是java序列化,如何实现java序列化
2012/11/14 面试题
建筑工程技术应届生自荐信
2013/09/27 职场文书
活动倡议书范文
2014/05/13 职场文书
公司领导班子群众路线四风问题对照检查材料
2014/10/02 职场文书
Django+Nginx+uWSGI 定时任务的实现方法
2022/01/22 Python
Kubernetes关键组件与结构组成介绍
2022/03/31 Servers