qq_15384063 2014-12-20 12:40 采纳率: 33.3%
浏览 1533

我这段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条回答 默认 最新

  • 随心而行-专心致志 2014-12-21 02: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;
    }
    };
    }

    评论

报告相同问题?

悬赏问题

  • ¥15 数学的三元一次方程求解
  • ¥20 iqoo11 如何下载安装工程模式
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题