代码之家  ›  专栏  ›  技术社区  ›  Yi Jiang

在Javascript中复制Codeigniter的人性化()和下划线()函数

  •  -1
  • Yi Jiang  · 技术社区  · 14 年前

    我在尝试复制CI的 humanize() underscore() Javascript中的函数。

    CI documentation , 将多个单词用空格分隔并加下划线,同时 人性化()

    function underscore($str) {
        return preg_replace('/[\s]+/', '_', strtolower(trim($str)));
    }
    
    function humanize($str) {
        return ucwords(preg_replace('/[_]+/', ' ', strtolower(trim($str))));
    }
    

    我的代码不必复制行为 ,但对于 函数我希望它能够处理多个空格字符,而 人性化()

    到目前为止,我得到的是:

    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相比太长了。必须有一个更紧凑的版本),所以我想知道是否有一个更有效/可读的方法来实现这一点。

    1 回复  |  直到 14 年前
        1
  •  4
  •   codaddict    14 年前

    你可以用 g 全局替换的修饰符为:

    function underscore(string) {
       string = $.trim(string).toLowerCase();
       return string.replace(/\s+/g, '_');
    }