2010-09-07 72 views
4

我有一个字符串如何在字符串上实现“EndsWith”?

var s1 = "a,$,b,c"; 

我要检查,如果另一个字符串s1

因此结束,如果我把这些字符串它必须返回true

w,w,a,$,b,c 
^,^,^,$,@,#,%,$,$,a,$,b,c 
a,w,e,q,r,f,z,x,c,v,z,$,W,a,$,b,c 

而对于这些false

a,$,b,c,F,W 
a,$,b,c,W 
a,$,b,c,$,^,\,/ 

我该如何检查?

+0

请访问http://计算器.com/questions/280634/endswith-in-javascript – 2010-09-07 16:52:58

回答

10
if (str.slice(-s1.length) == s1) { 
} 

,或较少动态和更字面上:

if (str.slice(-7) == s1) { 
} 

使用)负为片(偏移设定从字符串的结尾的起点,减去负的开局 - 在这个从最后7个字符(或s1.length)。

slice() - MDC

添加此字符串原型很简单:

String.prototype.endsWith = function (str) { 
    return this.slice(-str.length) === str; 
} 

alert("w,w,a,$,b,c".endsWith(s1)); 
// -> true 
+0

您应该在原型增强中使用标识比较'==='。 – Tomalak 2010-09-07 17:07:49

+1

@Tomalak:完成了,我想如果你传入一个数组作为str参数,这会有所作为。 – 2010-09-07 17:12:37

1

获取字符串S1的长度,然后得到的测试字符串的最后一位数字的字符串,看看他们是相同。

像这样:

if (s2.substring(s2.length - s1.length) == s1) 
+0

您测试了哪个浏览器? ''abc“.substring(-1)'不适用于Firefox – BrunoLM 2010-09-07 17:11:39

+0

@BurnoLM我想我已经习惯了PHP的方式,我的更新应该可以工作。 – 2010-09-07 17:29:29

5

这将添加一个Java类的endsWith方法字符串:

String.prototype.endsWith = function(suffix) { 
    if (this.length < suffix.length) 
     return false; 
    return this.lastIndexOf(suffix) === this.length - suffix.length; 
} 

然后,您可以做:

"w,w,a,$,b,c".endsWith(s1) //true 
+0

+1我会将'this.length-suffix.length'存储在一个变量'l'中,然后返回一行:'return l> = 0 && this.lastIndexOf(suffix)=== l;'' – Tomalak 2010-09-07 17:04:32

相关问题