Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

вы можете использовать Regexps, например:

str.match(/value$/)

который вернет true, если строка имеет значение в конце ($).

Ответ 2

Украден у прототипов:

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

'slaughter'.endsWith('laughter');
// -> true

Ответ 3

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

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

Ответ 4

Мне не повезло с совпадением, но это сработало:

Если у вас есть строка, "Это моя строка". и хотел бы посмотреть, заканчивается ли это с периодом, сделайте следующее:

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;
}

Ответ 5

Я просто расширяю то, что опубликовал @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

Ответ 6

ES6 поддерживает это непосредственно:

'this is dog'.endsWith('dog')  //true

Ответ 7

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

Ответ 8

Вы всегда можете прототипировать класс String, это будет работать:

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

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