JavaScript中如何判断字符串以指定子串结尾

Table of Contents

1 内置版本

if ( a.endsWith( b ) )

2 我最初的2B版本,用substring()实现,而且用"=",没用"=="

String.prototype.endsWith   =
function ( str )
{
    if ( str == null || str.length > this.length )
    {
        return false;
    }
    if ( this.substring( this.length - str.length ) == str )
    {
        return true;
    }
    else
    {
        return false;
    }
};

if ( a.endsWith( b ) )
function PrivateStringEndWith ( a, b )
{
    if ( b == null || a == null || b.length > a.length )
    {
        return false;
    }
    if ( a.substring( a.length - b.length ) == b )
    {
        return true;
    }
    else
    {
        return false;
    }
}

if ( PrivateStringEndWith( a, b ) )

3 用indexOf()实现

String.prototype.endsWith   =
function ( str )
{
    return this.indexOf( str, this.length - str.length ) !== -1;
};

4 用substr()实现

String.prototype.endsWith   =
function ( str )
{
    return this.substr( -str.length ) === str;
};

可以多一个预检查,没有内置版本时才自己实现

if ( typeof String.prototype.endsWith !== 'function' )
{
    String.prototype.endsWith   =
    function ( str )
    {
        return this.substr( -str.length ) === str;
    }
};

5 用正则表达式实现

String.prototype.endsWith   =
function ( str )
{
    var reg = new RegExp( str+"$" );

    return reg.test( this );
};

source: http://scz.617.cn:8/