查找字符串中字符出现的次数 js

JavaScript07

查找字符串中字符出现的次数 js,第1张

方法很多,有一种方法最简单。用split()来分割你需要查询出现次数的字符。分割后得到的数组长度减1就是字符串出现的次数了。举例如下。var abox="谁爱我,你爱我吗"需要查找"我"字出现的次数。cishu=abox.split("我").length-1数组长度是3,"我"字出现的次数是2。

<script type="text/javascript">

/*计算子字符串在字符中出现的次数*/

//字符串

var str1 = 'zhulinjia zh lia tjqig qgx gja xx yy xxf xxxq wqja ix'

//子串

var str2 = 'a'

alert( Tongji(str1 , str2) )

//统计

function Tongji(string , char)

{

var index = 0 , index1 = 0 , count = 0

for(var i = 0i <string.length &&( index1 !dao= -1 )i++ )

{

index1 = string.indexOf(char, index)

index = index1 + 1

count = i

}

return count

}

function TestMaxCount(s) {

    var chAry = new Array()

    var cnAry = new Array()

    var i, idx, ch, continueCh = "", continueCn = 1

    var maxCh = "", maxCn = 0

    

    for (i = 0 i < s.length i++) {

        ch = s.slice(i, i + 1)

        if (ch != continueCh) {     // 字符与前一个不同

            if (continueCh != "") {     // 如果前一字符不是空串, 要更新重复数组的最大重复次数值

                idx = GetIndex(chAry, continueCh)

                if (idx == -1) {

                    chAry.push(continueCh)

                    cnAry.push(continueCn)

                }

                else {

                    if (continueCn > cnAry[idx]) {  // 如果新的连续重复次数大于原次数, 进行更新

                        cnAry[idx] = continueCn

                    }

                }

            }

            

            if (continueCn > maxCn) {

                maxCn = continueCn

                maxCh = continueCh

            }

            

            continueCn = 1         // 重复次数归1

            continueCh = ch        // 重复字符置为当前获取到的字符

        }

        else {

            continueCn++

        }

    }

    

    if (continueCh != "") {

        idx = GetIndex(chAry, continueCh)

        if (idx == -1) {

            chAry.push(continueCh)

            cnAry.push(continueCn)

        }

        else {

            if (continueCn > cnAry[idx]) {  // 如果新的连续重复次数大于原次数, 进行更新

                cnAry[idx] = continueCn

            }

        }

        if (continueCn > maxCn) {

            maxCn = continueCn

            maxCh = continueCh

        }

    }

    // 返回资料chAry为字符数组, cnAry为对应字符最大连续次数, maxCh重复次数最多的字符, maxCn重复最多次数

    return { chAry: chAry, cnAry: cnAry, maxCh: maxCh, maxCn: maxCn }

}

function GetIndex(ary, ch) {        // 获得元素在数组中的索引

    var i

    

    for (i = 0 i < ary.length i++) {

        if (ary[i] == ch) {

            return i

        }

    }

    

    return -1

}

var data = TestMaxCount("121211112122222121222")

window.alert(data.maxCh + ": " + data.maxCn)

当然, 应该可以用正则表达式使代码更紧凑.