JSFiddle - React, Tailwind, and code Playground
by Travis Harris
JavaScript
//For those who'd rather not mess with natives
formatParts = function(string){
var parts = [];
string.replace(/([_\-A-Z]|^[^_\-A-Z])([^_\-A-Z]*)/g,function($0,$1,$2){
var part = $1.match(/[_\-]/)?$2:$1+$2;
parts.push(part.toLowerCase());
});
return parts;
}
toCamelCase = function(string){
var output = '';
formatParts(string).forEach(function(part,index){
output += index?part.charAt(0).toUpperCase() + part.substring(1):part;
});
return output;
}
toUpperCamelCase = function(string){
var output = '';
formatParts(string).forEach(function(part,index){
output += part.charAt(0).toUpperCase() + part.substring(1);
});
return output;
}
toDashed = function(string){
return formatParts(string).join('-');
}
toUnderscored = function(string){
return formatParts(string).join('_');
}
//Or for those comfortable extending natives:
if (!String.prototype.formatParts)String.prototype.formatParts = function(){
var parts = [];
this.replace(/([_\-A-Z]|^[^_\-A-Z])([^_\-A-Z]*)/g,function($0,$1,$2){
var part = $1.match(/[_\-]/)?$2:$1+$2;
parts.push(part.toLowerCase());
});
return parts;
}
if (!String.prototype.toCamelCase)String.prototype.toCamelCase = function(){
var output = '';
this.formatParts().forEach(function(part,index){
output += index?part.charAt(0).toUpperCase() + part.substring(1):part;
});
return output;
}
if (!String.prototype.toUpperCamelCase)String.prototype.toUpperCamelCase = function(){
var output = '';
this.formatParts().forEach(function(part,index){
output += part.charAt(0).toUpperCase() + part.substring(1);
});
return output;
}
if (!String.prototype.toDashed)String.prototype.toDashed = function(){
return this.formatParts().join('-');
}
if (!String.prototype.toUnderscored)String.prototype.toUnderscored = function(){
return this.formatParts().join('_');
}
var tests = [
'something-like-this1',
...