заканчивается в JavaScript - PullRequest
1066 голосов
/ 11 ноября 2008

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

Пример: у меня есть строка

var str = "mystring#";

Я хочу знать, заканчивается ли эта строка #. Как я могу это проверить?

  1. Есть ли в JavaScript метод endsWith()?

  2. Одно из решений, которое у меня есть, это взять длину строки и получить последний символ и проверить его.

Это лучший способ или есть какой-то другой способ?

Ответы [ 31 ]

7 голосов
/ 02 мая 2013

Я не знаю о вас, но:

var s = "mystring#";
s.length >= 1 && s[s.length - 1] == '#'; // will do the thing!

Почему регулярные выражения? Зачем возиться с прототипом? зиЬзЬг? c'mon ...

7 голосов
/ 02 марта 2015

Если вы используете lodash :

_.endsWith('abc', 'c'); // true

Если не использовать lodash, вы можете позаимствовать его источник .

6 голосов
/ 29 апреля 2014

Я только что узнал об этой библиотеке строк:

http://stringjs.com/

Включите файл js, а затем используйте переменную S, например:

S('hi there').endsWith('hi there')

Его также можно использовать в NodeJS, установив его:

npm install string

Тогда требуется его как переменная S:

var S = require('string');

На веб-странице также есть ссылки на библиотеки альтернативных строк, если эта не нравится.

6 голосов
/ 08 мая 2015

Еще одна быстрая альтернатива, которая для меня сработала, используя регулярное выражение:

// Would be equivalent to:
// "Hello World!".endsWith("World!")
"Hello World!".match("World!$") != null
4 голосов
/ 18 ноября 2014

Так много вещей для такой маленькой проблемы, просто используйте это регулярное выражение

var str = "mystring#";
var regex = /^.*#$/

if (regex.test(str)){
  //if it has a trailing '#'
}
4 голосов
/ 19 мая 2014
function strEndsWith(str,suffix) {
  var reguex= new RegExp(suffix+'$');

  if (str.match(reguex)!=null)
      return true;

  return false;
}
4 голосов
/ 30 апреля 2015

Прошло много лет на этот вопрос. Позвольте мне добавить важное обновление для пользователей, которые хотят использовать ответ наиболее часто встречающегося чакрита.

Функции'ndsWith 'уже добавлены в JavaScript как часть ECMAScript 6 (экспериментальная технология)

См. Здесь: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith

Следовательно, настоятельно рекомендуется добавить проверку на наличие нативной реализации, как указано в ответе.

2 голосов
/ 16 июня 2010
function check(str)
{
    var lastIndex = str.lastIndexOf('/');
    return (lastIndex != -1) && (lastIndex  == (str.length - 1));
}
2 голосов
/ 19 июля 2011

Путь к будущему доказательству и / или предотвращению перезаписи существующего прототипа будет проверочной проверкой, чтобы убедиться, что он уже добавлен в прототип String. Вот мой взгляд на версию без регулярных выражений.

if (typeof String.endsWith !== 'function') {
    String.prototype.endsWith = function (suffix) {
        return this.indexOf(suffix, this.length - suffix.length) !== -1;
    };
}
2 голосов
/ 04 февраля 2015

@ Принятый ответ Чакрита - это надежный способ сделать это самостоятельно. Однако, если вы ищете пакетное решение, я рекомендую взглянуть на underscore.string , как указывал @mlunoe. Используя underscore.string, код будет:

function endsWithHash(str) {
  return _.str.endsWith(str, '#');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...