【发布时间】:2023-03-12 20:14:02
【问题描述】:
判断一个字符串是否以某个值结尾的最简单方法是什么?
【问题讨论】:
标签: javascript jquery
判断一个字符串是否以某个值结尾的最简单方法是什么?
【问题讨论】:
标签: javascript jquery
从prototypejs偷来的:
String.prototype.endsWith = function(pattern) {
var d = this.length - pattern.length;
return d >= 0 && this.lastIndexOf(pattern) === d;
};
'slaughter'.endsWith('laughter');
// -> true
【讨论】:
你可以像这样使用正则表达式:
str.match(/value$/)
如果字符串末尾有“值”($),则返回 true。
【讨论】:
正则表达式
"Hello world".match(/world$/)
【讨论】:
你总是可以原型 String 类,这会起作用:
String.prototype.endsWith = function(str) {return (this.match(str+"$")==str)}
您可以在http://www.tek-tips.com/faqs.cfm?fid=6620中找到String类的其他相关扩展
【讨论】:
match 返回了一个数组。它必须是 this.match(str+"$")[0]===str(如果 match 没有找到任何东西,这可能会失败 - 实际上并没有对这个进行错误测试)。
我只是在扩展 @luca-matteis 发布的内容,但为了解决 cmets 中指出的问题,应包装代码以确保您不会覆盖本机实现。
if ( !String.prototype.endsWith ) {
String.prototype.endsWith = function(pattern) {
var d = this.length - pattern.length;
return d >= 0 && this.lastIndexOf(pattern) === d;
};
}
这是the 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'。适用于所有浏览器。比正则表达式快得多。
【讨论】: