-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