2 qq 15384063 qq_15384063 于 2014.12.20 20:40 提问

我这段javascript代码身噩梦地方有问题?用基本的算法定位子字符串在父字符串中首次出现的位置?
function find(){ var string1=document.getElementById('string').value; var substring1=document.getElementById('substring').value; for (var i=0;i<string1.length;i++) { document.write(string1[i]+' '); document.write(substring1[i]+' '); if (string1[i]==substring1[0]) { for (var j = 0; j < substring1.length; j++) { if (string1[i+j]!= substring1[j]) { break; }; else if (j==substring1.length-1) { var pos = i; document.write(pos); break; }; }; }; }; }

2个回答

Ocean_yang
Ocean_yang   2014.12.21 10:07

几个问题:
1. javascript中有现成的API(indexOf)可以获取子串在父串首次出现的位置,具体可以参见链接http://www.w3cschool.cc/js/js-strings.html
2.代码中有明显的语法错误{ break; }; else if (j==substring1.length-1)
else前面“;”是多余的
3.代码应该有一些跳出处理:一旦找到了位置或者子串长度大于父串剩余字符的长度就该终止循环
我改好之后的代码如下:
function find()
{
var string1=document.getElementById('string').value;
var substring1=document.getElementById('substring').value;
var finded = false;
for (var i=0;i if(i > (string1.length - substring1.length)){
break;
}
document.write(string1[i]+' ');
document.write(substring1[i]+' ');
if (string1[i]==substring1[0]) {
for (var j = 0; j < substring1.length; j++) {
if (string1[i+j]!= substring1[j]) {
break;
}else if (j == substring1.length - 1) {
var pos = i;
finded = true;
document.write(pos);
break;
};
};
};
if(finded){
break;
}
};
}

qq_15384063
qq_15384063 另外还想问一下,javascript有没有什么办法跳出两层for循环呢
接近 3 年之前 回复
qq_15384063
qq_15384063 谢谢你,非常感谢您及时又耐心的回复!!太感谢了
接近 3 年之前 回复
Ocean_yang
Ocean_yang   2014.12.21 16:45

没有,要一层一层跳出

Csdn user default icon
上传中...
上传图片
插入图片