复制Codeigniter';Javascript中的s humanize()和下划线()函数
我试图在Javascript中复制CI的复制Codeigniter';Javascript中的s humanize()和下划线()函数,javascript,regex,string,Javascript,Regex,String,我试图在Javascript中复制CI的人性化()和下划线()函数 从中,下划线()获取多个由空格分隔的单词并在它们之间加下划线,人性化()获取多个由下划线分隔的单词并在它们之间加空格。CI实现类似于: function underscore($str) { return preg_replace('/[\s]+/', '_', strtolower(trim($str))); } function humanize($str) { return ucwords(preg_re
人性化()
和下划线()
函数
从中,下划线()
获取多个由空格分隔的单词并在它们之间加下划线,人性化()
获取多个由下划线分隔的单词并在它们之间加空格。CI实现类似于:
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(' ');
}
函数下划线(字符串){
string=$.trim(string).toLowerCase();
var-oldString;
while(oldString!==字符串){
oldString=字符串;
string=string.replace(/\s+/,“"”);
}
返回字符串;
}
功能人性化(字符串){
字符串=$.trim(字符串);
var术语=字符串。拆分(“”“);
对于(var i=0;i
这很好,是的,但我并不喜欢我这样做(与PHP相比,它太长了。必须有一个更紧凑的版本),所以我想知道是否有一个更有效/可读的方法来实现这一点 您可以使用
g
修饰符进行全局替换,如下所示:
function underscore(string) {
string = $.trim(string).toLowerCase();
return string.replace(/\s+/g, '_');
}
您可以使用
g
修饰符进行全局替换,如下所示:
function underscore(string) {
string = $.trim(string).toLowerCase();
return string.replace(/\s+/g, '_');
}
我不敢相信我怎么会错过那个(现在我对复制那个标志需要多少代码感到有点尴尬)我不敢相信我怎么会错过那个(现在我对复制那个标志需要多少代码感到有点尴尬)