任何人都可以帮助我得到javascript中给定字符串中重复字符的数量。获取字符串中重复的字符数
例如,
"abccdef" -> 1 (Only "c" repeated)
"Indivisibilities" -> 2 ("i" and "s" repeated)
谢谢
任何人都可以帮助我得到javascript中给定字符串中重复字符的数量。获取字符串中重复的字符数
例如,
"abccdef" -> 1 (Only "c" repeated)
"Indivisibilities" -> 2 ("i" and "s" repeated)
谢谢
这是一个有趣的问题。我们可以做的是使用String.toLowerCase
将字符串转换为小写字母,然后分割为""
,这样我们就可以得到一组字符。
我们会用Array.sort
对它进行分类。经过排序后,我们将使用Array.join
加入。 然后,我们可以使用正则表达式/(.)\1+/g
,这意味着匹配一个字母和后续字母(如果它们相同)。
当我们使用String.match
与规定的正则表达式,我们将得到一个数组,其长度是答案。如果匹配返回null
且结果为TypeError
,还使用一些try...catch
返回0
。
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
您可以使用这样
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');
很酷的做法!谢谢! – devwannabe 2017-08-08 02:50:29
感谢您的回答。如果我传递了“abcdef”,它应该返回0,但它显示一条错误消息“TypeError:无法读取null的属性'length' – 2015-03-02 10:21:14
@NaveenKrishna现在它应该工作。 – 2015-03-02 10:22:39
Wow优秀的男人,它的作品!简单而好的答案。 – 2015-03-02 10:29:20