/*计算子字符串在字符中出现的次数*/
//字符串
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)
当然, 应该可以用正则表达式使代码更紧凑.