一尘不染

JavaScript中的endsWith

javascript

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

示例:我有一个字符串

var str = "mystring#";

我想知道该字符串是否以结尾#。我该如何检查?

  1. endsWith()JavaScript中是否有方法?

  2. 我有一个解决方案是获取字符串的长度并获取最后一个字符并进行检查。

这是最好的方法还是还有其他方法?


阅读 1097

收藏
2020-04-25

共1个答案

一尘不染

该答案最初发布于2010年(六年前),因此请注意以下有见地的评论:


原始答案:

我知道这是一个古老的问题…但是我也需要这个,并且我需要它来跨浏览器工作,所以… 结合每个人的答案和评论 并简化一下:

String.prototype.endsWith = function(suffix) {
    return this.indexOf(suffix, this.length - suffix.length) !== -1;
};
  • 不创建子字符串
  • 使用本机indexOf功能以获得最快的结果
  • 使用第二个参数跳过不必要的比较indexOf以向前跳过
  • 在Internet Explorer中工作
  • 没有正则表达式并发症

另外,如果您不喜欢在本机数据结构的原型中填充东西,这是一个独立版本:

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

编辑: 正如@hamish在评论中指出的那样,如果您想在安全方面犯错,并检查是否已经提供了实现,则可以typeof像这样添加检查:

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