jQuery或JavaScript中的函数是否与PHP中的strstr()
相同?
我有一个应该是1,2,3,12,13,23或123的AJAX响应。我想检查1是否存在,然后如果2存在,那么如果存在3。
答案 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);
}
}
}
总的来说,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。