Javascript中使用对象对字符串进行处理
Javascript对字符串处理时对象的运用
======================================
使用对象处理字符串:计算频率最多的字符和次数
<script>
var str = "adadfdfseffserfefsefseeffffftsdg"; //命名一个变量放置给出的字符串
var result = {};
for ( var i = 0; i < str.length; i++) {
var c = str.charAt(i);
if (result[c]) {
result[c]++;
} else {
result[c] = 1;
}
}
console.log(result);
var max=0;
var maxChar='';
for ( var key in result) {
if(result[key]>max){
max=result[key];
maxChar=key;
}
}
console.log(maxChar);
console.log(max);
</script>
小改进后的代码:
var str = "adadfdfseffserfefsefseeffffftsdg"; //命名一个变量放置给出的字符串
var result = {};
var max = 0;
var maxChar = '';
for ( var i = 0; i < str.length; i++) {
var c = str.charAt(i);
if (result[c]) {
result[c]++;
if(result[c] > max){
max = result[c];
maxChar = c;
}
} else {
result[c] = 1;
}
}
alert(max + ':' +maxChar)
正则表达式处理字符串:
var a = {};
var maxValue = 0;
var str = "adadseffouyangpingfsffffftsdg";
str.replace(/./g, function(c){
var count = a[c] ? (a[c] +1): 1;
a[c] = count;
maxValue = maxValue < a[c]? a[c] : maxValue;
return '';
});
for(var p in a){
if(a[p] == maxValue){
alert(p + '\t' + maxValue);
break;
}
}
===================================
使用数组处理字符串:计算频率最多的字符和次数
var maxchar = function(s){
var h = {},t = [0,''];
for(var i = 0 , l = s.length; i < l ; i++){
if(h[s[i]]){
h[s[i]] += 1;
if(h[s[i]] > t[0]){
t[0] = h[s[i]];
t[1] = s[i];
}
}else{
h[s[i]] = 1;
}
}
return t;
}
console.log(maxchar('adadfdfsedfsdfffserfefsefseeffffftsdg'));
====================================
对所有字符(包括中文字符)都适用:
<script>
var a = "";
var maxValue = 0;
var str = "adadseffouyangpingfsffffftsdg";
while(str.length>0){
l = str.length;
s = str.charAt(0);
str = str.replace(eval("/"+s+"/g"),"");
if(maxValue<(l-str.length)){
a = s;
maxValue=l-str.length;
}
}
alert(a + maxValue);
</script>