JavaScript or jQuery equivalent of PHP's strstr() function

后端 未结 6 951
滥情空心
滥情空心 2020-12-03 22:00

Is there a function in jQuery or JavaScript that does the same as strstr() in PHP?

I have an AJAX response that should be 1,2,3,12,13,23 or 123. I want

相关标签:
6条回答
  • 2020-12-03 22:18

    Read about these javascript functions - indexOF() and lastIndexOf().

    0 讨论(0)
  • 2020-12-03 22:23

    Ok I just found something that works!

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

    Thanks for your contributions :)

    0 讨论(0)
  • 2020-12-03 22:27

    Well, not built in. String.indexOf( String str ) returns the integer index of the substring but then, you can easily build one: 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(‘name@example.com’, ‘@’);
        // *     returns 3: ‘@example.com’
        // *     example 4: strstr(‘name@example.com’, ‘@’, 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);
            }
        }
    }
    
    0 讨论(0)
  • 2020-12-03 22:32

     const isSame = function(indx, haystack, needle){
        let j = 0;
        for(let i=indx, len = indx + needle.length; i< len; i++) {
           if (haystack[i] !== needle[j++]){
              return false;      
           }
        }
        return true;
    }
    
    var strStr = function(haystack, needle) {
        if (!needle) {
            return 0;
        }
            
        for(let i=0; i<haystack.length; i++) {
            if (haystack[i] === needle[0]){
               if(isSame(i, haystack, needle)){
                   return i;
               };
            }
        }
        return -1;
    };
    console.log(strStr("hello", "ll"));
    console.log(strStr("mississippi", "issip"));

    Base conditions:- when needle is empty string, it will return 0. If there is no match found it will return -1.

    0 讨论(0)
  • 2020-12-03 22:35

    Here is an implementation without any library/method calls:

    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 讨论(0)
  • 2020-12-03 22:39

    Try using this:

    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(‘name@example.com’, ‘@’);
        // *     returns 3: ‘@example.com’
        // *     example 4: strstr(‘name@example.com’, ‘@’, 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);
            }
        }
    }
    

    (From http://phpjs.org/functions/strstr:551)

    Overall phpjs is pretty phenomenal.

    0 讨论(0)
提交回复
热议问题