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

示例:我有一个字符串

var str = "mystring#";

我想知道该字符串是否以#结尾。我该如何检查?
  • JavaScript中是否有endsWith()方法?
  • 我拥有的一种解决方案是获取字符串的长度并获取最后一个字符并进行检查。

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

    最佳答案

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

  • Shauna-


  • T.J. Crowder-



  • 原始答案:
    我知道这是一个古老的问题...但是我也需要它,并且我需要它来跨浏览器工作,所以... 结合了每个人的答案和评论并简化了一下:
    String.prototype.endsWith = function(suffix) {
        return this.indexOf(suffix, this.length - suffix.length) !== -1;
    };
    
  • 不创建子字符串
  • 使用 native indexOf函数可获得最快的结果
  • 使用indexOf的第二个参数跳过不必要的比较,以跳过
  • 在Internet Explorer中工作
  • 没有正则表达式并发症

  • 另外,如果您不喜欢在 native 数据结构的原型(prototype)中填充东西,这是一个独立版本:
    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;
        };
    }
    

    10-04 22:55