作者:zccst
思想原理:把字符串分割为数组,粒度为每一个字符。循环该数组,用正则替换原字符串对于字符,并计算替换前后字符串长度差值,即为该字符出现的次数。
另外,还可以对重复次数进行排序。
用到的知识点:
1,正则表达式。基本写法,RegExp,replace的用法。
2,数组中的sort。自定义函数排序。(sort默认按字符编码排序)
function charCntInString (argument) { var str = argument,result = [],beforeLen,afterLen; str = str.replace(/( |,)/ig, ""); var strArr = str.split(""); for (var i = 0; i < strArr.length; i++) { //str里的长度一直在变化。strArr里的字符可能在str里多次,但只有第一次匹配 if(str.indexOf(strArr[i]) != -1){ beforeLen = str.length; var reg = new RegExp(strArr[i], "ig"); str2 = str.replace(reg,"");//字符串变短 afterLen = str2.length; result.push(strArr[i]+":"+(beforeLen-afterLen)); str = str2; } } return result.sort(sortNum); } function sortNum (p1,p2) { var n1 = p1.split(":")[1]; var n2 = p2.split(":")[1]; return n2-n1;//从大到小 从小到大n1-n2; } //var s = "This section of the site is dedicated to the JavaScript language itself, the parts that are not specific to Web pages or other host"; var s = "hello,world"; var ret = charCntInString(s); console.log(ret);