获取字符串中的重复字符数

时间:2015-03-02 10:04:48

标签: javascript string

任何人都可以帮助我在javascript中获取给定字符串中重复字符的数量。

例如,

"abccdef" -> 1 (Only "c" repeated)

"Indivisibilities" -> 2 ("i" and "s" repeated)

谢谢

2 个答案:

答案 0 :(得分:13)

你可以这样使用

function getFrequency(string) {
var freq = {};
for (var i=0; i<string.length;i++) {
    var character = string.charAt(i);
    if (freq[character]) {
       freq[character]++;
    } else {
       freq[character] = 1;
    }
}

return freq;
};

getFrequency('Indivisibilities');

答案 1 :(得分:10)

这是一个有趣的问题。我们可以做的是使用String.toLowerCase将字符串转换为小写,然后在""上拆分,这样我们就可以得到一个字符数组。

然后我们将使用Array.sort对其进行排序。对它进行排序后,我们将使用Array.join加入它。 然后我们可以使用正则表达式/(.)\1+/g,这实际上意味着匹配一个字母和后续字母,如果它们是相同的。

当我们使用String.match指定的正则表达式时,我们将得到一个数组,其长度就是答案。还使用了一些try...catch来返回0,以防匹配返回null并生成TypeError

function howManyRepeated(str){
   try{ return str.toLowerCase().split("").sort().join("").match(/(.)\1+/g).length; }
   catch(e){ return 0; } // if TypeError
}
console.log(howManyRepeated("Indivisibilities")); // 2