Javascript js中克隆的substring()函数出错
我试图在js中创建一个函数,用于检查主字符串中是否存在子字符串。例如:-main=111010和substring=011应该返回false,因为主字符串中不存在substring,但我的代码返回true。下面是代码Javascript js中克隆的substring()函数出错,javascript,string,substring,Javascript,String,Substring,我试图在js中创建一个函数,用于检查主字符串中是否存在子字符串。例如:-main=111010和substring=011应该返回false,因为主字符串中不存在substring,但我的代码返回true。下面是代码 var string = "111010", substr = "011"; var found=false; outter:for(var i=0;i<string.length;i++){ if(string.charAt(i)==substr.ch
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");
}
var string=“111010”,
substr=“011”;
var=false;
outter:for(var i=0;i这是检查以下各项的代码:
var string = "111010", substr = "011";
var test = string.indexOf(substr);
if (test >= 0) {
alert('yes');
} else {
alert('no');
}
您忘记重新初始化找到的变量
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");
}
- 为什么要分别对待第一个字母
- 不要使用标签
- 不要搜索匹配项,搜索不匹配的字母,如果找不到,则字符串匹配
- 不要使用不必要的索引变量(如k),针串上字母的位置为
j
,而在干草串中字母的位置为i+j
为什么不直接使用string.indexOf(substr)!=-1
?是的,我可以使用language提供的api,但我想自己使用,这样我就可以知道它是如何工作的。我知道如何使用indexOf函数解决这个问题,但我被要求在不使用任何api的情况下实现相同的功能。让我检查一下,现在即使存在子字符串,它也会输出false。请尝试使用main=111010,sub=101,因为在找到匹配项时循环没有停止。请参阅我的编辑。它工作了,仍然没有输出单个数字的true(main=111010,substring=1),但我找到了一个修复方法。谢谢。:)请再次查看我的更新,以获得代码的更清晰版本。
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;
}