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

来源:7-8 返回指定的字符串首次出现的位置

慕仔1561325

2019-01-16 15:40

<!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回答

  • qq_慕慕947699
    2019-10-08 18:37:08
    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;    
    }


  • weixin_慕的地8082936
    2019-08-25 20:17:06

    最好判断一下sub空字符串的情况。

  • 该你走运气
    2019-02-26 15:37:19

     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;

          }

    这一部分不能理解

    weixin...

    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 21:22:06

    共 1 条回复 >

  • 慕用4091213
    2019-02-10 21:14:11

    感谢感谢!

  • 慕仔1561325
    2019-01-16 15:43:46

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

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

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468194 学习 · 21891 问题

查看课程

相似问题