-1
我試圖在Javascript中複製CI的humanize()
和underscore()
函數。在Javascript中複製Codeigniter的humanize()和下劃線()函數
從CI documentation,underscore()
取多個單詞用空格分隔並加下劃線,而humanize()
用多個單詞用下劃線隔開並在它們之間增加空格。該CI實現看起來是這樣的:
function underscore($str) {
return preg_replace('/[\s]+/', '_', strtolower(trim($str)));
}
function humanize($str) {
return ucwords(preg_replace('/[_]+/', ' ', strtolower(trim($str))));
}
我的代碼不具備自我複製行爲正好,但對於underscore()
功能我想它能夠處理多個空格字符,而humanize()
函數可能有點鬆散,並且假定只有一個下劃線將僅用於分隔每個單詞。
到目前爲止,我所擁有的是:
function underscore(string) {
string = $.trim(string).toLowerCase();
var oldString;
while(oldString !== string){
oldString = string;
string = string.replace(/\s+/, '_');
}
return string;
}
function humanize(string) {
string = $.trim(string);
var terms = string.split('_');
for(var i=0; i < terms.length; i++){
terms[i] = terms[i].charAt(0).toUpperCase() + terms[i].slice(1);
}
return terms.join(' ');
}
的正常工作,是的,但我真的不喜歡我這樣做的方式(這是方式相比,PHP過長有必須。是一個更緊湊的版本),所以我想知道是否有更高效/可讀的方法來實現這一點。
我無法相信我怎麼錯過了(現在我覺得它花了多少代碼複製該標誌略顯尷尬) – 2010-09-28 12:19:48