Existem inúmeros String.prototype
exemplos de código para alterar maiúsculas e minúsculas que podem ser encontrados, mas nenhum parece abordar o problema comum em que a entrada da string está em maiúsculas e é necessária para a saída como “Maiúsculas” ou “Título maiúsculo” – os exemplos I ‘ vi resultará simplesmente no retorno da string ainda em maiúsculas.
Optou por seguir a convenção de nomenclatura para String conforme descrito por .toLowerCase()
e .toUpperCase()
.
.toCapitalCase ()
/* string.toCapitalCase()
Handles inputs:
UPPERCASE, "space separated".
eg: 'STRING TO CONVERT'.toCapitalCase() returns: 'String to convert'
*/
String.prototype.toCapitalCase = function() {
return this.charAt(0).toUpperCase() + this.slice(1).toLowerCase();
};
.toTitleCase ()
/* string.toTitleCase()
Handles inputs:
UPPERCASE, "space separated".
eg: 'STRING TO CONVERT'.toTitleCase() returns: 'String To Convert'
*/
String.prototype.toTitleCase = function() {
return this.split(' ')
.map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
.join(' ');
};
.anyStringToTitleCase ()
/* string.anyStringToTitleCase()
Handles inputs:
"space separated", camelCase, ClassCase, UPPERCASE, snake_case, dash-case, object.case.
eg: 'string-toConvert_has a.very ComplexStructure'.anyStringToTitleCase()
returns: 'String To Convert Has A Very Complex Structure'
*/
const STRING_DECAMELIZE_REGEXP = (/([a-zd])([A-Z])/g);
const STRING_SEPARATORS_REGEXP = (/(-|_|.)/g);
String.prototype.anyStringToTitleCase = function() {
return this.replace(STRING_DECAMELIZE_REGEXP, '$1 $2')
.replace(STRING_SEPARATORS_REGEXP, ' ')
.split(' ')
.map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
.join(' ');
};