使用javascript在循环中提取单独字母的正则表达式

big*_*nbt 2 javascript regex

我正在编写一个脚本来为在线作者识别创建指标.我在文献中遇到的一件事就是计算每个字母的频率(多少个字母,多少个字母等),与大小写无关.因为我不想为每个字母创建一个单独的语句,所以我试图循环这个东西,但我无法弄明白.我能想到的最好的是将ASCII字母代码转换为十六进制,然后......希望奇迹发生.

到目前为止,我已经有了

element = id.toLowerCase();
var hex = 0;
for (k=97; k<122; k++){
    hex = k.toString(16); //gets me to hex
    letter = element.replace(/[^\hex]/g, "")//remove everything but the current letter I'm looking for
    return letter.length // the length of the resulting string is how many times the ltter came up
}   
Run Code Online (Sandbox Code Playgroud)

但是当然,当我这样做时,它会将十六进制解释为字母十六进制,而不是我想要的字母的十六进制代码.

Ell*_*lle 5

不确定为什么要转换为十六进制,但是你可以遍历字符串的字符,并跟踪每个出现的对象用作哈希的对象:

var element = id.toLowerCase();
var keys = {};

for(var i = 0, len = element.length; i<len; i++) {
    if(keys[element.charAt(i)]) keys[element.charAt(i)]++;
    else keys[element.charAt(i)] = 1;
}
Run Code Online (Sandbox Code Playgroud)

您可以使用数组执行相同的操作,但哈希更快.