为了账号安全,请及时绑定邮箱和手机立即绑定

检索子字符串出现的所有位置

<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>string对象 </title>

<script type="text/javascript">

  

  function search()

  {

      var txt = document.getElementById("txt").value;

      var sub = document.getElementById("sub").value;

 if(txt.indexOf(sub)==-1)

 {

  document.getElementById("fruit").value="没有出现检索内容";

 }

 else

 {

  var i;

  var a=0;

  var n=-1;

  var arr=new Array();

           while(a<txt.length)

           {

 i = txt.indexOf(sub,a);

 if(i==-1)

 {break;}

 ++n;

              arr[n]=i+1;

 a=i+1;

           } 

  document.getElementById("fruit").value=arr;

      }

      

  }

</script>

    </head>

    <body>

     <form>

        输入待检索字符串

        <input type='text' id='txt' /><br/>

        输入你要检索的子字符串

        <input type='text' id='sub' /><br/>

        <input type='button' value='点击输出所有出现检索内容的位置' onclick='search()'/><br/>

        <input type='text' id='fruit'/>

    </form> 

    </body>

</html>          


正在回答

5 回答

function search() {      
    var txt=document.getElementById('txt').value;      
    var sub=document.getElementById('sub').value;      
    var first = -1;    //默认第一次出现的值为-1      
    var arr = []      //存储出现的下标      
    if (!sub) return            
    if (txt.indexOf(sub) !== -1) {        
        first = txt.indexOf(sub)        
        arr.push(first)        
        for (var i = 0; i < txt.length; i++) {          
            if (txt.indexOf(sub, first + 1)!==-1) {            
                first = txt.indexOf(sub, first + 1)            
                arr.push(first)         
             }        
         }      
     }      
     document.getElementById('fruit').value=arr;    
}


0 回复 有任何疑惑可以回复我~

 var i;

  var a=0;

  var n=-1;

  var arr=new Array();

           while(a<txt.length)

           {

 i = txt.indexOf(sub,a);

 if(i==-1)

 {break;}

 ++n;

              arr[n]=i+1;

 a=i+1;

           } 

  document.getElementById("fruit").value=arr;

      }

这一部分不能理解

0 回复 有任何疑惑可以回复我~
#1

weixin_慕的地8082936

var a=0; var n=0; var arr=new Array(); while(a<txt.length) { a = txt.indexOf(sub,a); if(a==-1){break;} a++; arr[n]=a; n++; 这样应该就能看懂了吧,楼主的变量定义的太繁琐,循环写的也有些乱。
2019-08-25 回复 有任何疑惑可以回复我~

感谢感谢!

0 回复 有任何疑惑可以回复我~

用的都是前面的学过的东西,做完有点成就感,哈哈

检索的位置我设定为第一个字符为1而不是0

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

检索子字符串出现的所有位置

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信