我正在研究腳本以創建聯機作者標識的度量標準。我在文獻中遇到的一件事是計算每個字母的頻率(多少個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