当前位置: 首页 > 面试题库 >

JavaScript中的endsWith

景俊良
2023-03-14
问题内容

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

示例:我有一个字符串

var str = "mystring#";

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

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

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

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


问题答案:

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

  • Shauna -Google员工的更新-看起来ECMA6添加了此功能。MDN文章还显示了polyfill。

  • TJ Crowder-在现代浏览器中创建子字符串并不昂贵。这个答案很可能是在2010年发布的。this.substr(-suffix.length) === suffix如今,简单的方法在Chrome上最快,在IE11上与indexOf相同,并且在Firefox上仅慢4%(fergetaboutit领域):当结果为假时,整体速度更快:jsperf.com/endswith-stackoverflow-when-false 当然,随着ES6添加endsWith,这一点是没有意义的。 :-)

原始答案:

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

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;
    };
}


 类似资料:
  • 问题内容: 好的,问题很简单。我要使用两个JavaScript文件:一个遵循模块模式,另一个遵循第一个。我使用Node.js测试了所有代码。当所有代码都放在一个文件中时,它可以工作,但是如果我将代码分成两个文件,则会出现错误。 这是代码: PS:我想使用Javascript表示法而不是Node export表示法来实现模式。 问题答案: 首先,我不清楚为什么要在Node.js中使用“模块模式”。我

  • 本文向大家介绍JavaScript中的Object.assign()?,包括了JavaScript中的Object.assign()?的使用技巧和注意事项,需要的朋友参考一下 Object.assign() 此方法用于将一个或多个源对象复制到目标对象。因为它在源上使用“ get”,在目标上使用“ Set”,所以它会调用getter和setter。它返回目标对象,该对象具有从目标对象复制的属性和值。

  • 问题内容: 我需要在JavaScript源代码中添加一些轻量级语法糖,并使用基于JavaScript的构建系统对其进行处理。是否有任何用JavaScript编写的开源JavaScript解析器?在V8或类似的高性能JavaScript实现上运行时,它们是否相当快? 感谢您提供的任何指导! 问题答案: UglifyJS(JavaScript中的JS压缩器/美化器)包含一个完整的JavaScript解

  • 问题内容: 我正在尝试编写一个执行以下操作的函数: 将整数数组作为参数(例如[1,2,3,4]) 创建所有[1,2,3,4]可能排列的数组,每个排列的长度为4 下面的函数(我在网上找到了它)通过将字符串作为参数并返回该字符串的所有排列来实现 我无法弄清楚如何对其进行修改以使其与整数数组一起工作,(我认为这与某些方法在字符串上的处理方式与在整数上的处理方式不同有关,但是我不确定。 ..) 注意:我正

  • 问题内容: 我们可以传递不可变的变量引用作为函数中的参数吗? 例: 问题答案: 由于JavaScript不支持通过引用传递参数,因此您需要将变量设置为对象: 在这种情况下,是对对象的引用。当传递给函数时,该引用将复制到。因此,与内存中的引用相同。改变财产的性质影响财产的性质。 Javascript将始终按值传递函数参数。那只是语言的规范。您 可以在两个函数都本地的作用域中创建,而根本不传递变量。

  • 本文向大家介绍Javascript中的AVL树,包括了Javascript中的AVL树的使用技巧和注意事项,需要的朋友参考一下 AVL树(以发明家Adelson-Velsky和Landis的名字命名)是一种自平衡二进制搜索树。自平衡树是一棵在其子树中执行一些旋转的树,以便可以在左右两侧进行平衡。 这些树木在插入物使树木一侧偏重的情况下特别有用。平衡树使查找时间接近O(log(n)),而完全不平衡的