在Javascript中复制Codeigniter的humanize()和underscore()函数

时间:2010-09-28 12:08:39

标签: javascript regex string

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

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()函数,我希望它能够处理多个空白字符,而{{ 1}}函数可能有点宽松,并假设只有一个下划线只能用来分隔每个单词。

到目前为止我所拥有的是:

humanize()

哪种方法很好,是的,但是我并不喜欢我这样做的方式(与PHP相比,方式太长了。必须有更紧凑的版本),所以我'我想知道是否有更有效/可读的方法来实现这一目标。

1 个答案:

答案 0 :(得分:4)

您可以使用g修饰符全局替换:

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