Как реализовать "EndsWith" на строку? - PullRequest
4 голосов
/ 07 сентября 2010

У меня есть строка

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 ]

10 голосов
/ 07 сентября 2010
if (str.slice(-s1.length) == s1) { 
}

Или, менее динамично и более буквально:

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

Использование отрицательного смещения для slice () устанавливает начальную точку с конца строки, минус отрицательное начало - в этом случае 7 символов (или s1.length ) с конца.

ломтик () - MDC

Добавить это в прототип строки просто:

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

alert("w,w,a,$,b,c".endsWith(s1));
// -> true
5 голосов
/ 07 сентября 2010

Это добавит Java-подобный методndsWith к String:

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
1 голос
/ 07 сентября 2010

Получите длину строки s1, затем получите подстроку последних цифр тестовой строки и посмотрите, совпадают ли они.

Примерно так:

if (s2.substring(s2.length - s1.length) == s1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...