如何在JavaScript中检查字符串是否以特定字符结尾?
示例:我有一个字符串
var str = "mystring#";
我想知道该字符串是否以结尾#。我该如何检查?
#
endsWith()JavaScript中是否有方法?
endsWith()
我有一个解决方案是获取字符串的长度并获取最后一个字符并进行检查。
这是最好的方法还是还有其他方法?
该答案最初发布于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,这一点是没有意义的。 :-)
this.substr(-suffix.length) === suffix
原始答案:
我知道这是一个古老的问题…但是我也需要这个,并且我需要它来跨浏览器工作,所以… 结合每个人的答案和评论 并简化一下:
String.prototype.endsWith = function(suffix) { return this.indexOf(suffix, this.length - suffix.length) !== -1; };
indexOf
另外,如果您不喜欢在本机数据结构的原型中填充东西,这是一个独立版本:
function endsWith(str, suffix) { return str.indexOf(suffix, str.length - suffix.length) !== -1; }
编辑: 正如@hamish在评论中指出的那样,如果您想在安全方面犯错,并检查是否已经提供了实现,则可以typeof像这样添加检查:
typeof
if (typeof String.prototype.endsWith !== 'function') { String.prototype.endsWith = function(suffix) { return this.indexOf(suffix, this.length - suffix.length) !== -1; }; }