例子,来自jb之家
应用正则表达式的全局匹配,可以匹配出字符出现的次数,比较这些次数,将最大的保存并返回。代码如下:
代码如下 | 复制代码 |
var countMost = function(str){ if(!str) return; var _count = 0, _temp = 0, _reg, _char; for(var i=0; i<str.length; i++){ _reg = new RegExp(str.charAt(i), 'g'); _temp = str.match(_reg).length; if(_temp > _count){ _count = _temp; _char = str.charAt(i); } } return _count; //return {count:_count, char:_char}; }; |
注释掉的代码可以一并返回出现最多次数的字符。
例子,来自iteye技术
将字符串的字符保存在一个hashtable中,key是字符,value是这个字符出现的次数
代码如下 | 复制代码 |
varstr="abcdefgaddda"; varobj={}; for(vari=0,l=str.length;i<l;i++){ varkey=str[i]; if(!obj[key]){ obj[key]=1; }else{ obj[key]++; } } /*遍历这个hashtable,获取value最大的key和value*/ varmax=-1; varmax_key=""; varkey; for(keyinobj){ if(max<obj[key]){ max=obj[key]; max_key=key; } } alert("max:"+max+"max_key:"+max_key); |
另附两上统计字符串内字符出现次数
看看cloudchen给出的使用正则表达式的代码:
代码如下 | 复制代码 |
<SCRIPT LANGUAGE="JavaScript"> var str = "cloudchen"; var find = "c"; var reg = new RegExp(find,"g") var c = str.match(reg); alert(c?c.length:0) </SCRIPT> var reg = new RegExp(find,"g")一句建立了一个正则表达式,也可以写为: var reg = /c/g; |
c即要匹配的字符,其中g表示全局搜索。match则返回匹配的字符(串)。这样也就获得了字符串中指定字符出现的次数。这是一个很正规的做法。
split用来统计字符的出现次数
只能用太有才了来形容“我佛山人”,他给出了如下的代码:
代码如下 | 复制代码 |
<script language="vbs"> MsgBox UBound(Split("blueideablueideabbs","b")) </script> |
VBS的,但是用JS也一样。重要的是这个思路,简直是太简单了!用字符串的split方法将其分为数组,数组的length-1就是字符的出现次数。代码修改为JavaScript如下:
代码如下 | 复制代码 |
<script type="text/javascript"> function test(){ var str = "www.111cn.net"; alert(str.split("c").length-1); alert(str.split("w").length-1); } </script> |
效果如下,首先显示的是“c”字符的次数,然后是“w”字符的出现次数。
时间: 2024-10-25 00:58:03