Как узнать, что строка начинается / заканчивается определенной строкой в ​​jQuery? - PullRequest
196 голосов
/ 15 сентября 2010

Я хочу знать, начинается ли строка с указанного символа / строки или заканчивается в JQuery.

Например:

var str = 'Hello World';

if( str starts with 'Hello' ) {
   alert('true');
} else {
   alert('false');
}

if( str ends with 'World' ) {
   alert('true');
} else {
   alert('false');
}

Если естьразве нет функции, тогда есть альтернатива?

Ответы [ 6 ]

371 голосов
/ 15 сентября 2010

Один из вариантов - использовать регулярные выражения:

if (str.match("^Hello")) {
   // do this if begins with Hello
}

if (str.match("World$")) {
   // do this if ends in world
}
89 голосов
/ 15 сентября 2010

Для запуска с помощью вы можете использовать indexOf:

if(str.indexOf('Hello') == 0) {

...

ref

, и вы можете делать математические расчеты наДлина строки для определения «заканчивается».

if(str.lastIndexOf('Hello') == str.length - 'Hello'.length) {
22 голосов
/ 15 сентября 2010

Для этого не требуется jQuery.Вы могли бы закодировать jQuery-оболочку, но это было бы бесполезно, поэтому вам лучше использовать

var str = "Hello World";

window.alert("Starts with Hello ? " + /^Hello/i.test(str));        

window.alert("Ends with Hello ? " + /Hello$/i.test(str));

, так как метод match () устарел.

PS: флаг "i" в RegExp равенопционально и обозначает регистр без учета регистра (поэтому он также возвращает true для "hello", "hEllo" и т. д.).

15 голосов
/ 12 сентября 2014

Вам действительно не нужен jQuery для таких задач. В спецификации ES6 уже есть готовые методы начинается с и заканчивается с .

var str = "To be, or not to be, that is the question.";
alert(str.startsWith("To be"));         // true
alert(str.startsWith("not to be"));     // false
alert(str.startsWith("not to be", 10)); // true

var str = "To be, or not to be, that is the question.";
alert( str.endsWith("question.") );  // true
alert( str.endsWith("to be") );      // false
alert( str.endsWith("to be", 19) );  // true

В настоящее время доступны в FF и Chrome . Для старых браузеров вы можете использовать их polyfills или substr

9 голосов
/ 31 октября 2014

Вы всегда можете расширить String прототип так:

//  Checks that string starts with the specific string
if (typeof String.prototype.startsWith != 'function') {
    String.prototype.startsWith = function (str) {
        return this.slice(0, str.length) == str;
    };
}

//  Checks that string ends with the specific string...
if (typeof String.prototype.endsWith != 'function') {
    String.prototype.endsWith = function (str) {
        return this.slice(-str.length) == str;
    };
}

И используйте это так:

var str = 'Hello World';

if( str.startsWith('Hello') ) {
   // your string starts with 'Hello'
}

if( str.endsWith('World') ) {
   // your string ends with 'World'
}
2 голосов
/ 18 октября 2017

ES6 теперь поддерживает метод startsWith() и endsWith() для проверки начала и конца string с.Если вы хотите поддерживать механизмы pre-es6, вы можете рассмотреть возможность добавления одного из предложенных методов в прототип String.

if (typeof String.prototype.startsWith != 'function') {
  String.prototype.startsWith = function (str) {
    return this.match(new RegExp("^" + str));
  };
}

if (typeof String.prototype.endsWith != 'function') {
  String.prototype.endsWith = function (str) {
    return this.match(new RegExp(str + "$"));
  };
}

var str = "foobar is not barfoo";
console.log(str.startsWith("foob"); // true
console.log(str.endsWith("rfoo");   // true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...