gpt4 book ai didi

javascript - js中克隆的substring()函数出错

转载 作者:行者123 更新时间:2023-12-02 16:46:22 26 4
gpt4 key购买 nike

我正在尝试在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");
}

最佳答案

您忘记重新初始化 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");
}

如果您的代码在您的字符串子字符串之间找到单个公共(public)字母,则它始终返回 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;
}
  • 为什么要单独处理第一个字母?
  • 不要使用标签
  • 不要搜索匹配项,而是搜索不匹配的字母,如果没有找到,则字符串匹配。
  • 不要使用不必要的索引变量(如k),字母在针串上的位置是j,在干草串中的位置是i+j<

关于javascript - js中克隆的substring()函数出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27080071/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com