我正在研究脚本以创建联机作者标识的度量标准。我在文献中遇到的一件事是计算每个字母的频率(多少个a,多少个b等),而不考虑大写或小写。因为我不想为每封信创建一个单独的声明,所以我试图循环这个事情,但我无法弄清楚。我能够想到的最好的方法是将ASCII字母代码转换为十六进制,然后...希望奇迹发生。正则表达式用于在JavaScript循环中提取单独的字母
到目前为止,我已经得到了
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
}
当然的,但是,当我做到这一点,它解释为十六进制的字母H^E X,不是我想要的字母的十六进制代码。
这不是最好的方法;看看@ElliotBonneville的答案。但要回答具体问题,如果要从变量组件构建正则表达式,请使用'new RegExp(string)'而不是正则表达式:'var hexRegex = new RegExp(“[^ \\”+ hex +“] “,”g“);' – 2012-04-23 19:03:14
@MarkReed:您可能需要[escape](http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript/3561711# 3561711)你的字符串,如果你想这样做与一般字符。 – hugomg 2012-04-23 19:15:54