JS的trim() startWith() endWith() 方法

JS的trim() startWith() endWith() 方法

转载 2015年01月12日 10:29:50

JS的trim() startWith() endWith() 方法

  
----------------------------------js去空格---------------------------
   去除字符串左右两端的空格,在vbscript里面可以轻松地使用 trim、ltrim 或 rtrim,但在js中却没有这3个内置方法,需要手工编写。下面的实现方法是用到了正则表达式,效率不错,并把这三个方法加入String对象的内置方法中去。


  写成类的方法格式如下:(str.trim();)


  <script language="javascript">
   String.prototype.trim=function(){
      return this.replace(/(^\s*)|(\s*$)/g, "");
   }
   String.prototype.ltrim=function(){
      return this.replace(/(^\s*)/g,"");
   }
   String.prototype.rtrim=function(){
      return this.replace(/(\s*$)/g,"");
   }

js javasrcipt startWith() endWith() 方法

<input name="searchContent" id="searchContent" type="text" onclick="test();">
<SCRIPT type="text/javascript" language="JavaScript">
function test(){
 var a  = "abcdef".startWith("abc");
 alert("a : "+a);
 var b  = "abcdef".endWith("def");
 alert("b : "+b);
}
String.prototype.endWith=function(str){
if(str==null||str==""||this.length==0||str.length>this.length)
  return false;
if(this.substring(this.length-str.length)==str)
  return true;
else
  return false;
return true;
}

String.prototype.startWith=function(str){
if(str==null||str==""||this.length==0||str.length>this.length)
  return false;
if(this.substr(0,str.length)==str)
  return true;
else
  return false;
return true;
}

</SCRIPT>

 

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

1
2
3
4
5
6
"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
2
3
4
5
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的效率就会很差。

1
2
3
4
5
if (typeof String.prototype.endsWith != 'function') {
 String.prototype.endsWith = function(suffix) {
  return this.indexOf(suffix, this.length - suffix.length) !== -1;
 };
}

和startsWith不一样,endsWith中可以使用indexOf。原因是它只扫描了最后的一段字符串,而比起slice的优势是它不用复制字符串,直接扫描即可,所以效率更高。

 

posted @ 2017-11-28 17:34  sky20080101  阅读(296)  评论(0)    收藏  举报