我正在尝试在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相比,方式太长了。必须有更紧凑的版本),所以我'我想知道是否有更有效/可读的方法来实现这一目标。
答案 0 :(得分:4)
您可以使用g
修饰符全局替换:
function underscore(string) {
string = $.trim(string).toLowerCase();
return string.replace(/\s+/g, '_');
}