首页 > 解决方案 > 有没有办法在 JavaScript 中返回字符串中字符的频率?

问题描述

例如 count("Good", "o") 结果:2

我不希望它快,我只需要简单且有效的东西。

标签: javascriptarrays

解决方案


您可以使用match来查找字符串中出现的字符并创建匹配的数组。使用.length会告诉你有多少。中的'g'标志RegExp用于匹配所有出现,而不仅仅是第一个。

function count(str, find) {
    return (str.match(RegExp(find,'g')) || []).length
}

count("Good", "o");

如果您要查找的字符是特殊字符,例如, ,等,上述RegExp解决方案将不起作用。RegExp.|+

以下是不使用的替代解决方案RegExp(也可能更快):

function count(str, find) {
    return (str.split(find)).length - 1;
}

count("Good", "o");

此函数在每次出现字符时将字符串拆分为一个数组。(例如Good变成['G','','d'])。这个数组的大小总是比出现次数多一,因为它包括两端。因此,可以得到这个数组的长度并减去 1。


推荐阅读