JavaScript或jQuery相当于PHP的strstr()函数

时间:2011-08-10 17:32:14

标签: javascript jquery strstr

jQuery或JavaScript中的函数是否与PHP中的strstr()相同?

我有一个应该是1,2,3,12,13,23或123的AJAX响应。我想检查1是否存在,然后如果2存在,那么如果存在3。

6 个答案:

答案 0 :(得分:15)

尝试使用:

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);
        }
    }
}

(来自http://phpjs.org/functions/strstr:551

总的来说,phpjs非常惊人。

答案 1 :(得分:3)

好的,我发现了一些有用的东西!

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

感谢您的贡献:)

答案 2 :(得分:2)

阅读这些javascript函数 - indexOF()和lastIndexOf()。

答案 3 :(得分:2)

好吧,没有内置。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(‘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);
        }
    }
}

答案 4 :(得分:0)

这是一个没有任何库/方法调用的实现:

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++;
   }
};

答案 5 :(得分:-1)

 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"));

基本条件:- 当needle为空字符串时,将返回0。 如果没有找到匹配项,它将返回-1。