String.prototype.startsWith()和String.prototype.endsWith()
String.prototype.startsWith()
startsWith()方法用来判断当前字符串是否是以另外一个给定的子字符串“开头”的,根据判断结果返回 true 或 false。
这是一个ES6方法。
searchString
要搜索的子字符串。
position
在 str 中搜索 searchString 的开始位置,默认值为 0,也就是真正的字符串开头处。
var str = "To be, or not to be, that is the question."; alert(str.startsWith("To be")); // true alert(str.startsWith("not to be")); // false alert(str.startsWith("not to be", 10)); // true
polyfill
/*! http://mths.be/startswith v0.2.0 by @mathias */ if (!String.prototype.startsWith) { (function() { 'use strict'; // needed to support `apply`/`call` with `undefined`/`null` var defineProperty = (function() { // IE 8 only supports `Object.defineProperty` on DOM elements try { var object = {}; var $defineProperty = Object.defineProperty; var result = $defineProperty(object, object, object) && $defineProperty; } catch(error) {} return result; }()); var toString = {}.toString; var startsWith = function(search) { if (this == null) {//如果是当前字符串是null抛出错误 throw TypeError(); } var string = String(this); if (search && toString.call(search) == '[object RegExp]') {//如果search参数是正则对象抛出错误 throw TypeError(); } var stringLength = string.length;//字符串长度 var searchString = String(search);//需要寻找的目标字符串 var searchLength = searchString.length;//目标字符串长度 var position = arguments.length > 1 ? arguments[1] : undefined;//start参数,起始位置 // `ToInteger` var pos = position ? Number(position) : 0;//start参数转成整数 if (pos != pos) { // better `isNaN`判断是否是NaN pos = 0; } var start = Math.min(Math.max(pos, 0), stringLength);//处理start是负数的情况 // Avoid the `indexOf` call if no match is possible if (searchLength + start > stringLength) {//如果目标字符串 从 start起始位置开始已经超出原始字符串长度,那说明没匹配到,返回false return false; } var index = -1; while (++index < searchLength) {//循环目标字符串长度 if (string.charCodeAt(start + index) != searchString.charCodeAt(index)) {//从start处开始比对每一个字符的编码是否相等 return false; } } return true; }; if (defineProperty) { defineProperty(String.prototype, 'startsWith', { 'value': startsWith, 'configurable': true, 'writable': true }); } else { String.prototype.startsWith = startsWith; } }()); }
String.prototype.endsWith()
endsWith()方法用来判断当前字符串是否是以另外一个给定的子字符串“结尾”的,根据判断结果返回 true 或 false。
这是一个ES6方法。
searchString
要搜索的子字符串。
position
在 str 中搜索 searchString 的结束位置,默认值为 str.length,也就是真正的字符串结尾处。
var str = "To be, or not to be, that is the question."; alert( str.endsWith("question.") ); // true alert( str.endsWith("to be") ); // false alert( str.endsWith("to be", 19) ); // true
polyfill
if (!String.prototype.endsWith) { String.prototype.endsWith = function(search, this_len) { if (this_len === undefined || this_len > this.length) { this_len = this.length; } return this.substring(this_len - search.length, this_len) === search;//截取字符串判断是否与目标相等 }; }

浙公网安备 33010602011771号