本帖最后由 gosenz 于 2011-02-22 11:13:06 编辑

解决方案 »

  1.   

    晕你这样不死才怪。[code=JScrip]t
    var str = "Zhang is a Family name which is also my Family name I like my Family then like other Family";
    var count = 0;
    var fp = 0;
    while(fp != -1){
    fp = str.indexOf("Family",fp + 6);
    count++;
    }
    alert(count); 
    [/code]
      

  2.   

    楼上说得对,但有个问题,如果Family出现在第0~5个位置,则会少算一个。
      

  3.   

    所以要修正一下:
    t
    var str = "Zhang is a Family name which is also my Family name I like my 
    Family then like other Family"; 
    var count = 0; 
    var fp = 0; 
    while(true) 

        fp = str.indexOf("Family",fp);
        if(fp!=-1)
        {
            fp++;
            count++;
        }
        else
            break;

    alert(count);  
      

  4.   

    LS已经有答案了,给个正则的:
    tvar str = "Zhang is a Family name which is also my Family name I like my Family then like other Family";
    alert(str.match(/\bFamily\b/gi).length);
      

  5.   

    其实也不是少算一个,楼主给的代码本身有逻辑错误,因为即使返回-1,count也自增了。
      

  6.   


    <html>
    <head>
    <titel>aaaa</title>
    </head>
    <body >
    <script>
    var count = 0; 
    var str="bbccaaddaaddaaddaaddaaddaaddaad";
    var fp=0;
    while(fp!=-1){
    if(fp==0){
    fp=str.indexOf("aa",fp);
    }else{
    fp=str.indexOf("aa",fp+2);
    }
    count=count+1;
    }
    alert(count); 
    </script>
    </body>
    </html>样例,楼主看看就懂了!
      

  7.   

    谢谢高手们相助,做如下修改即得正确结果
    var str = "FamilyZhang is a Family name which is also my Family name I like my Family then like other Family";
    var count = 0;
    var fp = 0;
    while(fp != -1)
    {
    fp = str.indexOf("Family",fp);
    if(fp != -1)
    {
    fp++;
    count ++;
    }
    }
    alert(count);
      

  8.   


    \b没有必要吧, 直接alert(str.match(/Family/g).length);
      

  9.   

    to:littlesatan对!这看需求而定,如果是需要整个单词的匹配,indexOf还很难搞。