如何检查字符串是否以JavaScript中的特定字符结束?

示例:我有一个字符串

var str = "mystring#";

我想知道字符串是否以#结尾。我怎么检查呢?

在JavaScript中有endsWith()方法吗? 我有一个解决方案,取字符串的长度,并得到最后一个字符,并检查它。

这是最好的办法还是还有别的办法?


当前回答

String.prototype.endWith = function (a) {
    var isExp = a.constructor.name === "RegExp",
    val = this;
    if (isExp === false) {
        a = escape(a);
        val = escape(val);
    } else
        a = a.toString().replace(/(^\/)|(\/$)/g, "");
    return eval("/" + a + "$/.test(val)");
}

// example
var str = "Hello";
alert(str.endWith("lo"));
alert(str.endWith(/l(o|a)/));

其他回答

@chakrit的公认答案是一个坚实的方法来做自己。但是,如果您正在寻找一个打包的解决方案,我建议您考虑一下underscore。字符串,正如@mlunoe指出的那样。使用下划线。字符串,代码将是:

function endsWithHash(str) {
  return _.str.endsWith(str, '#');
}
function check(str)
{
    var lastIndex = str.lastIndexOf('/');
    return (lastIndex != -1) && (lastIndex  == (str.length - 1));
}

没有看到接近切片法。所以我就把它留在这里:

function endsWith(str, suffix) {
    return str.slice(-suffix.length) === suffix
}

一种未来证明和/或防止覆盖现有原型的方法是测试检查它是否已经添加到String原型中。以下是我对非正则表达式高评级版本的看法。

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

这么多东西,这么小的问题,只是使用这个正则表达式

Var STR = "mystring#"; Var regex = /^.*#$/ 如果(regex.test (str)) { //如果后面有一个'#' }