[フレーム]
Last Updated: May 22, 2017
·
1.403K
· gentlefox

String.prototype Case Conversions - toTitleCase, toCapitalCase, anyStringToTitleCase.

There are numerous String.prototype code examples for changing case that can be found, yet none seem to address the common issue where the string input is in all-capitals and is needed to output as "Capital case" or "Title Case" - the examples I've seen will simply result in returning the string still as all-caps.

Have chosen to follow the String nomenclature convention as described by .toLowerCase() and .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-z\d])([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(' ');
};

AltStyle によって変換されたページ (->オリジナル) /