web-dev-qa-db-ja.com

PHPのstrstr()関数に相当するJavaScriptまたはjQuery

PHPのstrstr()と同じことをするjQueryまたはJavaScriptの関数はありますか?

AJAX応答は1、2、3、12、13、23、または123である必要があります。1が存在するかどうか、2が存在する場合、3が存在するかどうかを確認したいと思います。

10
medk

うまくいくものを見つけました!

http://my-sliit.blogspot.com/2008/06/search-string-javascript-like-strstr-in.html

あなたの貢献に感謝します:)

3
medk

これを使用してみてください:

function strstr(haystack, needle, bool) {
    // Finds first occurrence of a string within another
    //
    // version: 1103.1210
    // discuss at: http://phpjs.org/functions/strstr    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Onno Marsman
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: strstr(‘Kevin van Zonneveld’, ‘van’);
    // *     returns 1: ‘van Zonneveld’    // *     example 2: strstr(‘Kevin van Zonneveld’, ‘van’, true);
    // *     returns 2: ‘Kevin ‘
    // *     example 3: strstr(‘[email protected]’, ‘@’);
    // *     returns 3: ‘@example.com’
    // *     example 4: strstr(‘[email protected]’, ‘@’, true);    // *     returns 4: ‘name’
    var pos = 0;

    haystack += "";
    pos = haystack.indexOf(needle); if (pos == -1) {
        return false;
    } else {
        if (bool) {
            return haystack.substr(0, pos);
        } else {
            return haystack.slice(pos);
        }
    }
}

http://phpjs.org/functions/strstr:551 から)

全体的にphpjsはかなり驚異的です。

15
Andrew Lee

これらのJavaScript関数(indexOF()およびlastIndexOf())についてお読みください。

2
Webars

まあ、組み込まれていません。String.indexOf( String str )は部分文字列の整数インデックスを返しますが、簡単に構築できます: http://aimtb.wordpress.com/2011/03/16/strstr -in-javascript /

function strstr(haystack, needle, bool) {
    // Finds first occurrence of a string within another
    //
    // version: 1103.1210
    // discuss at: http://phpjs.org/functions/strstr    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Onno Marsman
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: strstr(‘Kevin van Zonneveld’, ‘van’);
    // *     returns 1: ‘van Zonneveld’    // *     example 2: strstr(‘Kevin van Zonneveld’, ‘van’, true);
    // *     returns 2: ‘Kevin ‘
    // *     example 3: strstr(‘[email protected]’, ‘@’);
    // *     returns 3: ‘@example.com’
    // *     example 4: strstr(‘[email protected]’, ‘@’, true);    // *     returns 4: ‘name’
    var pos = 0;

    haystack += "";
    pos = haystack.indexOf(needle); if (pos == -1) {
        return false;
    } else {
        if (bool) {
            return haystack.substr(0, pos);
        } else {
            return haystack.slice(pos);
        }
    }
}
2
Mrchief

ライブラリ/メソッド呼び出しのない実装は次のとおりです。

function strstr (haystack, needle) {
    var i = 0,
        tempLength = 0,
        temp = [];
    for (;;) {
        if (haystack[i] === undefined || needle == null) {
            return "No match";
        }
        //if the char doesn't match then reset
        else if (haystack[i] !== needle[tempLength]) {
            temp = [];
            tempLength = 0;
        } 
        //the char matches so let's store it.
        else if (haystack[i] === needle[tempLength]) {
            temp[tempLength] = haystack[i];
            if (needle[tempLength + 1] === undefined) {
                return temp;
            }
            tempLength++;
        }
     i++;
   }
};
0
sinemetu1