web-dev-qa-db-ja.com

文字列が何かで始まっているかどうかを確認しますか?

可能な重複:
Javascript StartsWith

私は^ =のようにしてidが何かで始まるかどうかを確かめることができることを知っています、そして、私はこれのためにそれを使ってみました、しかしうまくいきません…特定の方法で始まるパス名の要素の場合.

そう、

var pathname = window.location.pathname;  //gives me /sub/1/train/yonks/459087

/ sub/1で始まるすべてのパスに対して、要素のクラスを設定できるようにしたいのですが。

if(pathname ^= '/sub/1') {  //this didn't work... 
        ... 
253
n00b0101

stringObject.substring を使用

if (pathname.substring(0, 6) == "/sub/1") {
    // ...
}
363
Philip Reynolds
String.prototype.startsWith = function(needle)
{
    return this.indexOf(needle) === 0;
};
181
Ricardo Peres

あなたは string.match() とこれにも正規表現を使うことができます。

if(pathname.match(/^\/sub\/1/)) { // you need to escape the slashes

見つかった場合、string.match()は一致する部分文字列の配列を返します。それ以外の場合はnullを返します。

83
Cros

もう少し再利用可能な機能:

beginsWith = function(needle, haystack){
    return (haystack.substr(0, needle.length) == needle);
}
37
RobKohr

まず、文字列オブジェクトを拡張しましょう。プロトタイプを作成したRicardo Peresのおかげで、変数 'string'を使用すると、読みやすくするという意味では 'needle'よりもうまく機能すると思います。

String.prototype.beginsWith = function (string) {
    return(this.indexOf(string) === 0);
};

それならあなたはこのようにそれを使います。あぶない!コードを非常に読みやすくします。

var pathname = window.location.pathname;
if (pathname.beginsWith('/sub/1')) {
    // Do stuff here
}
22
Tim

JavaScript substring() メソッドを見てください。

2
rochal