Строка JavaScript или jQuery заканчивается служебной функцией

Какой самый простой способ выяснить, заканчивается ли строка определенным значением?

 Baldrick02 сент. 2012 г., 14:25
Смотрите также второй ответ на этот вопрос:stackoverflow.com/questions/280634/endswith-in-javascript

Ответы на вопрос(8)

Похищен у прототипов:

String.prototype.endsWith = function(pattern) {
    var d = this.length - pattern.length;
    return d >= 0 && this.lastIndexOf(pattern) === d;
};

'slaughter'.endsWith('laughter');
// -> true
 25 февр. 2011 г., 02:47
Если кто-то не хочет изменять строку, он может очень легко превратить ее в автономную функцию.
 08 июл. 2009 г., 00:36
Некоторые люди считают, что модификация прототипа базового класса - это то, что вы не должны делать - Крокфорд называет это «глобальным сокращением». в своей книге «JavaScript: хорошие части».
 08 июл. 2009 г., 00:41
Почему бы тебе не сделать это? Или вы просто не делаете этого, потому что это сказал Крокфорд?
 08 июл. 2009 г., 13:05
Вы не должны делать это, поскольку это не гарантирует работу во всех реализациях JS: спецификация ECMAScript Compact Profile (ECMA-327:ecma-international.org/publications/standards/Ecma-327.htm) указывает, что "Компакт" реализации (например, на портативных устройствах, таких как телефоны) не должны его поддерживать (см. раздел 5.2). Даже если вас это не беспокоит, вполне возможно, что оно сломает более новые версии JS: например, любой, у кого в прошлом был развернут код, добавляющий «forEach». Метод Array.prototype теперь ломает нативную реализацию в последних версиях Firefox.

Регулярные выражения

"Hello world".match(/world$/)

Если у вас есть строка, & quot; Это моя строка. & Quot; и хотел посмотреть, заканчивается ли он точкой, сделайте так:

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;
}
 04 июн. 2016 г., 04:42
Очень мило, @theJerm. Это работало для меня в разных ситуациях, тогда как .match не всегда.

что написал @ luca-matteis, но для решения проблем, указанных в комментариях, код должен быть упакован, чтобы убедиться, что вы не переписываете нативную реализацию.

if ( !String.prototype.endsWith ) {  
    String.prototype.endsWith = function(pattern) {
        var d = this.length - pattern.length;
        return d >= 0 && this.lastIndexOf(pattern) === d;
    };
}

Это предложенный метод для метода Array.prototype.forEach, указанного всеть разработчиков Mozilla

'hello world'.slice(-5)==='world', Работает во всех браузерах. Гораздо быстрее, чем регулярное выражение.

String.prototype.endsWith = function (str) {return (this.match (str + & quot; $ & quot;) == str)}

Вы можете найти другие связанные расширения для класса String вhttp://www.tek-tips.com/faqs.cfm?fid=6620

 25 февр. 2011 г., 02:47
Это не удастся, если str содержит специальные символы регулярного выражения, например & quot; [ssss] & quot ;.
 17 апр. 2018 г., 18:37
Это также не удается, потому чтоmatch возвращает массив. Это должно бытьthis.match(str+"$")[0]===str (и это может потерпеть неудачу, еслиmatch ничего не находит - на самом деле это не было ложной проверкой).

'this is dog'.endsWith('dog')  //true
 15 апр. 2017 г., 15:00
Да, но для этого у вас есть бабел.
 14 апр. 2017 г., 12:49
Это будет полезно, когда никто больше не использует IE11 или ниже.
Решение Вопроса

str.match(/value$/)

который вернул бы true, если строка имеет «значение»; в конце этого ($).

 29 мар. 2012 г., 05:42
Неудачный тест: значение = & quot; тест [a-z] & quot ;. В противном случае: «test [a-z]» .match (/ [a-z] $ /) возвращает «null»;
 10 февр. 2015 г., 14:58
match () не возвращает логическое значение. «foobar» .match (/ bar $ /) возвращает [«quot; bar» »]
 09 окт. 2013 г., 20:45
Обычно я сначала не вынимаю инструмент регулярных выражений из моей сумки, но это превосходит все альтернативы (String # endWith изначально поддерживается только в Firefox, а расширение / использование js сторонних разработчиков немного избыточно)
 04 окт. 2016 г., 15:20
RegEx Search () вместо Match () будет лучшим вариантом, если мы просто хотим получить логический результат. Search () вернет -1, если не найден. if (str.search (/ value $ /)! = -1)developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

Ваш ответ на вопрос