如何在字符串上实现“EndsWith”?

时间:2010-09-07 16:48:45

标签: javascript string

我有一个字符串

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,$,^,\,/

我该如何检查?

3 个答案:

答案 0 :(得分:10)

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

或者,动态性和字面性更低:

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

使用 slice()的负偏移设置字符串结尾的起点,减去负数 - 在本例中为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

答案 1 :(得分:5)

这将向String添加类似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

答案 2 :(得分:1)

获取字符串s1的长度,然后获取测试字符串的最后一位数的子字符串,看看它们是否相同。

像这样:

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