JavaScript 或 jQuery 字符串以实用函数结尾

判断一个字符串是否以某个值结束的最简单的方法是什么?

79128 次浏览

从原型机上偷来的:

String.prototype.endsWith = function(pattern) {
var d = this.length - pattern.length;
return d >= 0 && this.lastIndexOf(pattern) === d;
};


'slaughter'.endsWith('laughter');
// -> true

你可以使用 Regexp,像这样:

str.match(/value$/)

如果字符串的末尾有“ value”($) ,则返回 true。

正则表达式

"Hello world".match(/world$/)

你总是可以创建 String 类的原型,这样就可以工作了:

EndsWith = function (str) { return (this. match (str + “ $”) = = str)}

您可以在 http://www.tek-tips.com/faqs.cfm?fid=6620中找到 String 类的其他相关扩展名

我只是在扩展@luca-matteis 发布的内容,但是为了解决注释中指出的问题,代码应该被包装起来,以确保不会覆盖本机实现。

if ( !String.prototype.endsWith ) {
String.prototype.endsWith = function(pattern) {
var d = this.length - pattern.length;
return d >= 0 && this.lastIndexOf(pattern) === d;
};
}

这是 Mozilla Developer Network中指出的 Array.Prototype.foreach 方法的建议方法

我在比赛方法上没有运气,但这个方法奏效了:

如果你有绳子,“这是我的绳子。”想看看它是否以句号结尾,这样做:

var myString = "This is my string.";
var stringCheck = ".";
var foundIt = (myString.lastIndexOf(stringCheck) === myString.length - stringCheck.length) > 0;
alert(foundIt);

您可以将变量 stringCheck 更改为要检查的任何字符串。更好的做法是像下面这样把它放到你自己的函数中:

function DoesStringEndWith(myString, stringCheck)
{
var foundIt = (myString.lastIndexOf(stringCheck) === myString.length - stringCheck.length) > 0;
return foundIt;
}

ES6直接支持这一点:

'this is dog'.endsWith('dog')  //true

你可以做 'hello world'.slice(-5)==='world'。在所有的浏览器工作。比正则表达式快得多。