web-dev-qa-db-ja.com

jQueryで文字列が特定の文字列で始まったり終わったりすることを知る方法は?

文字列が指定された文字/文字列で始まるのか、それとも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');
}

機能がない場合は、代替方法はありますか?

196
Naveed

一つの選択肢は正規表現を使うことです:

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

if (str.match("World$")) {
   // do this if ends in world
}
369

Startswithの場合は、indexOfを使用できます。

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

...

ref

そして、あなたは 'endswith'を決定するために文字列の長さに基づいて数学をすることができます。

if(str.lastIndexOf('Hello') == str.length - 'Hello'.length) {
88
sje397

そのために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:RegExpの "i"フラグはオプションで、大文字と小文字を区別しません(したがって、 "hello"、 "hEllo"などもtrueを返します)。

22
Sebastien P.

そのようなタスクには、本当にjQueryは必要ありません。 ES6仕様では、それらはすでに箱から出してすぐに使えるメソッド startsWith および endsWith を持っています。

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で利用可能 。古いブラウザでは、ポリフィルまたはsubstrを使用できます。

15
Salvador Dali

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'
}
9
Mr. Pumpkin

ES6では、stringsの開始と終了をチェックするためのstartsWith()およびendsWith()メソッドがサポートされるようになりました。 es6より前のエンジンをサポートしたい場合は、推奨されているメソッドの1つを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
2
16kb