判断一个字符串是否以某个值结束的最简单的方法是什么?
从原型机上偷来的:
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'。在所有的浏览器工作。比正则表达式快得多。
'hello world'.slice(-5)==='world'