常用笔记: 与VBS当中的Mid()类似的substr()小记

VBS当中有Mid函数,一般形式为:Mid(str,start,len)   对应于JS就类似于:str.substr(start,len)

不过区别的是:VBS中start从1开始,而JS从0开始.

<script>
    //substr(start,length) : 从字符串的start个开始截取,截取length个
    //如果忽略length,则截取到尾.如果length为0或负,则返回空字符串
    
    //从第0个开始截取,截取到尾(相当于作白用功,基本不这么调用!)
    var e1 = (    (e1='0123456789|'), e1.substr(0)    );    
    //从第0个开始截取,截取长度为字符串的长度(相当于作白用功,基本不这么调用!)
    var e2 = (    (e2='0123456789|'), e2.substr(0,e2.length)    );    
    //从第0个开始截取,截取长度为字符串的长度减1(相当于去掉尾部1个字符)
    var e3 = (    (e3='0123456789|'), e3.substr(0,e3.length-1)    );    
    //从第0个开始截取,截取长度为字符串的长度减2(相当于去掉尾部2个)
    var e4 = (    (e4='0123456789|'), e4.substr(0,e4.length-2)    );    
    //......
    //从第0个开始截取,截取长度为字符串的长度减M(相当于去掉尾部M个)
    var M
        eN = (    (eN='0123456789|'),(M=5), eN.substr(0,eN.length-M)    );    
    
    
    //从第0个开始截取,截取到尾(相当于作白用功,基本不这么调用!)
    var s1 = (    (s1='0123456789|'), s1.substr(0)    );
    //从第1个开始截取,截取到尾(相当于头部去掉1个字符!)
    var s2 = (    (s2='0123456789|'), s2.substr(1)    );
    //从第2个开始截取,截取到尾(相当于头部去掉2个字符!)
    var s3 = (    (s3='0123456789|'), s3.substr(2)    );
    //......
    //从第M个开始截取,截取长度为字符串的长度减M(相当于去掉头部M个)
    var M
        sN = (    (sN='0123456789|'),(M=5), sN.substr(M)    );    
</script>

  如果要精简点调用,那么:

<script>    
    
    //所以对于原字符串要去掉尾部M个字符时,可以如上掉用,或者:
    String.prototype.DeleteEnd = function(M) 
     { 
         return this.substr(0,this.length-M); 
      }
    
    //对于去掉前M个的,直接可使用:sN.substr(M)
    //当然,如果想对应于DeleteEnd,也可定义:
    String.prototype.DeleteFront = function(M) 
     { 
         return this.substr(M); 
      }
</script>

 统一一下形式,删除以上的代码,将其替换为如下:

<script>    
    //所以对于原字符串要去掉头部M1个字符,又要去掉尾部M2个字符时,可以用:
    //用Delete命名比较简洁,但用DeleteSides则比较现义
    String.prototype.Delete = String.prototype.DeleteSides = function(M1,M2) 
     { 
        return this.substr(0,this.length-M2).substr(M1);
      }
</script>


调用:

<script>
    var str1 = '0123456789|'.Delete(1,1);    //'123456789'
    var str2 = '0123456789|'.Delete(0,1);    //'0123456789'
    var str2 = '0123456789|'.Delete(1,0);    //'123456789|'
    var str2 = '0123456789|'.Delete(2,3);    //'234567'
</script>

一般使用Delete扩展函数就可以了(注意扩展函数都以大写命名,区别于原有的函数)

原文地址:https://www.cnblogs.com/dreamyoung/p/4074117.html