我一直试图绕过这个问题一段时间,但一直没能找到一个优雅的解决方案。
问题:我有一个包含不同字符的字符串(“ABDDEEDDC”),我需要知道哪个字符最多。任何帮助将不胜感激。
干杯,Niko
答案 0 :(得分:4)
我不知道它有任何内置支持,但您可以使用字符串的charAt()
属性和关联数组来执行以下操作:
var charCounter:Object = new Object();
var str:String = "ABDDEEDDC";
var maxCount:int = 0;
var maxChar:String = "";
for(var i = 0; i < str.length; i++) {
// Must make sure the associate array is initialised!
if(charCounter.hasOwnProperty(str.charAt(i)) {
charCounter[str.charAt(i)]++;
} else {
charCounter[str.charAt(i)] = 1;
}
if(charCounter[str.charAt(i)] > maxCount) {
maxCount = charCounter[str.charAt(i)];
maxChar = str.charAt(i);
}
}
在结尾处,字符应该是maxChar,以及它在maxCount中出现的次数。
(旁注:我相信charCounter.hasOwnProperty(str.charAt(i))
而不是str.charAt(i) in charCounter
,你可以使用{{1}},但我没有测试过它。)
答案 1 :(得分:0)
据我所知,没有内置支持。
但是您可以使用String.charAt()
遍历字符串,并将结果保存在数组中。
如果数组已包含特定的字符,则可以增加数字或类似的数字。
答案 2 :(得分:0)
或者您可以将其拆分为数组,排序,然后只计算每个值
var str:String = "ABDDEEDDC";
var a:Array = str.split('');
a.sort();
var currChar:String = '';
var currCount:int = 0;
var maxChar:String = '';
var maxCount:int = 0;
for(var i:int=0; a[i]; i++){
if(currChar == a[i]) {
currCount++;
if(currCount > maxCount){
maxCount = currCount;
maxChar = currChar;
}
} else {
currChar = a[i];
currCount = 1;
}
}
trace(maxChar + ' occurs '+maxCount+' times');