没有什么原理可以讲的,直接上代码
const func = {
//把字串连接起来,例如:func.join('a','b','c','d',';') => a;b;c;d
join : function(){
if(arguments.length<=2)return arguments[0];
var datas = [];
var delimter = arguments[arguments.length-1];
for(let i=0;i<arguments.length-1;i++){
if(/^\s*$/.test(arguments[i]))continue;
datas.push(arguments[i]);
}
return datas.join(delimter);
},
//转为下划线:func.underline('userRole',true) => USER_ROLE
//转为下划线:func.underline('userRole',false) => user_role
underline : function(str,upper) {
const ret = str.replace(/([A-Z])/g,"_$1");
if(upper){
return ret.toUpperCase();
}else{
return ret.toLowerCase();
}
},
//转驼峰表示:func.camel('USER_ROLE',true) => UserRole
//转驼峰表示:func.camel('USER_ROLE',false) => userRole
camel : function(str,firstUpper) {
let ret = str.toLowerCase();
ret = ret.replace( /_([\w+])/g, function( all, letter ) {
return letter.toUpperCase();
});
if(firstUpper){
ret = ret.replace(/\b(\w)(\w*)/g, function($0, $1, $2) {
return $1.toUpperCase() + $2;
});
}
return ret;
}
};
console.log(func.join('a','b','c','d',';'));
console.log(func.join('a','b','c',';'));
console.log(func.join('a',';'));
console.log(func.join('a'));
console.log(func.underline('userRole',true));
console.log(func.underline('userRole',false));
console.log(func.camel('USER_ROLE',false));
console.log(func.camel('USER_ROLE',true));