我的函数试图在不使用indexOf或regex match
或任何标准JS方法的情况下检查字符串是否包含子字符串。
请检查此jsfiddle:https://jsfiddle.net/09x4Lpj2/
var string1 = 'applegate';
var string2 = 'gate';
function containsString(string1, string2){
var j = 0;
var k = 0;
var contains = 'false';
var charArray1 = string1.split('');
var charArray2 = string2.split('');
for(var i = 0; i < charArray2.length; i++){
j = i;
if(charArray1[j++] != charArray2[k++]){
contains = 'false';
}else{
contains = 'true';
}
}
console.log(contains);
}
containsString(string1, string2);
此解决方案仅在两个字符串(例如applegate
和apple
)之间的索引相同时才有效。但如果索引不相同(例如applegate
和gate
)则无效。如何正确操作迭代值,以便函数在两种情况下都返回true?
答案 0 :(得分:2)
您可以尝试这个经过修改的脚本。 https://jsfiddle.net/ebs38rfh/
var string1 = 'applegate';
var string2 = 'gate';
function containsString(string1, string2){
var charArray1 = string1.split('');
var charArray2 = string2.split('');
var match = 0;
for(var i = 0; i < charArray1.length - charArray2.length + 1; i++){
match = 0;
for(var j = 0; j < charArray2.length; j++){
if(charArray1[i+j] == charArray2[j]){
match++;
}
console.log(i, j, match, charArray1[i+j], charArray2[j]);
if(match == charArray2.length){
return true;
}
}
}
return false;
}
console.log(containsString(string1, string2));
答案 1 :(得分:1)
欢迎来到SO。 正则表达式可以使用..除非这也被禁止..
function containsString(string1, string2){
console.log(string1.match(string2) != null ? "Yes" : "No");
}
答案 2 :(得分:0)
这段代码有一个逻辑问题,只是为了确定A的最后一个字符是否等于B的对应字符,也许下面的代码是你想要的,添加一行代码。
var string1 = 'applegate';
var string2 = 'gate';
function containsString(string1, string2){
var j = 0;
var k = 0;
var contains = 'false';
var charArray1 = string1.split('');
var charArray2 = string2.split('');
for(var i = 0; i < charArray2.length; i++){
j = i;
if(charArray1[j++] != charArray2[k++]){
contains = 'false';
break;
}else{
contains = 'true';
}
}
console.log(contains);
}
答案 3 :(得分:0)
在不使用任何内置功能的情况下进行检查
function subSearch(long,short){
var count = 0
for(i = 0;i < long.length; i++){
for(j = 0;j < short.length; j++){
if(short[j] != long[i + j]){
break;
}
if((j+1) == short.length){
count++;
}
}
}
return count;
}