我正在尝试在js中创建一个函数来检查主字符串中是否存在子字符串。例如: - main = 111010和substring = 011应返回false,因为主字符串中不存在子字符串,但我的代码返回true。这是下面的代码。
var string = "111010",
substr = "011";
var found=false;
outter:for(var i=0;i<string.length;i++){
if(string.charAt(i)==substr.charAt(0)){
var k=i+1;
inner:for(j=1;j<substr.length;j++){
if(string.charAt(k++)==substr.charAt(j)){
found=true;
continue inner;
}else{
continue outter;
}
}
}
}
if(found!=false){
console.log("y")
}else{
console.log("n");
}
答案 0 :(得分:2)
您忘记重新初始化found
变量。
var string = "111010",
substr = "0110";
var found=false;
for(var i=0;i<string.length;i++){
if(string.charAt(i)==substr.charAt(0)){
var k=i+1;
for(j=1; j < substr.length;j ++)
if(string.charAt(k++)==substr.charAt(j)){
found=true;
}else{
found = false; // <<--this
break;
}
if(found) break;
}
}
if(found!=false){
console.log("y")
}else{
console.log("n");
}
如果您的代码在string
和substring
之间找到一个共同的字母,则代码始终返回true。
请不要使用标签,它们简直太糟糕了。谢谢!
演示:http://jsfiddle.net/fer52ufd/
Here是您的代码实际应用的方式。
var found = false;
for (var i = 0; i < string.length; i++) { // starting position
found = true; // All letters match, prove the opposite
for (j = 0; j < substr.length; j++) { // Compare the given string with the string starting at i
if (string.charAt(i + j) != substr.charAt(j)) { // If one letter does not match, stop searching
found = false;
break;
}
}
if (found) break;
}
j
,干草串中的位置为i+j
答案 1 :(得分:0)
这是检查以下内容的代码:
var string = "111010", substr = "011";
var test = string.indexOf(substr);
if (test >= 0) {
alert('yes');
} else {
alert('no');
}