在操作字符串(String)类型的时候,startsWith(anotherString)endsWith(anotherString)是非常好用的方法。其中startsWith判断当前字符串是否以anotherString作为开头,而endsWith则是判断是否作为结尾。

我们先来看微软是怎么解释的:

String.StartsWith 方法

 确定此字符串实例的开头是否与指定的字符串匹配。

名称说明
StartsWith(String)确定此字符串实例的开头是否与指定的字符串匹配。
StartsWith(String, Boolean, CultureInfo)确定在使用指定的区域性进行比较时此字符串实例的开头是否与指定的字符串匹配。
StartsWith(String, StringComparison)确定在使用指定的比较选项进行比较时此字符串实例的开头是否与指定的字符串匹配。

举例:

"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中没有自带这两个方法,需要的话只能自己写。当然写起来也不难。下面罗列

方案1、js字符串方法

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的优势是它不用复制字符串,直接扫描即可,所以效率更高。

方案2、正则

JavaScript采用正则表达式实现startWithendWith效果函数

String.prototype.startWith=function(str){     
  var reg=new RegExp("^"+str);     
  return reg.test(this);        
}  

String.prototype.endWith=function(str){     
  var reg=new RegExp(str+"$");     
  return reg.test(this);        
}

方案3、原生js

JavaScript实现startWithendWith效果函数

<script type="text/javascript">
 String.prototype.endWith=function(s){
  if(s==null||s==""||this.length==0||s.length>this.length)
     return false;
  if(this.substring(this.length-s.length)==s)
     return true;
  else
     return false;
  return true;
 }
 String.prototype.startWith=function(s){
  if(s==null||s==""||this.length==0||s.length>this.length)
   return false;
  if(this.substr(0,s.length)==s)
     return true;
  else
     return false;
  return true;
 }
</script>

//以下是使用示例
var url = location.href;
if (url.startWith('http://www.jb51.net'))
{
    //如果当前url是以 http://www.jb51.net/ 开头
} 

方案4、就是不被推荐的indexof啦

var index = str.indexOf('abc');
if(index==0){

//以'abc'开头

}

扫描二维码,在手机上阅读!