javascriptstringcapitalization

Capitalize words in string


What is the best approach to capitalize words in a string?


Solution

  • /**
     * Capitalizes first letters of words in string.
     * @param {string} str String to be modified
     * @param {boolean=false} lower Whether all other letters should be lowercased
     * @return {string}
     * @usage
     *   capitalize('fix this string');     // -> 'Fix This String'
     *   capitalize('javaSCrIPT');          // -> 'JavaSCrIPT'
     *   capitalize('javaSCrIPT', true);    // -> 'Javascript'
     */
    const capitalize = (str, lower = false) =>
      (lower ? str.toLowerCase() : str).replace(/(?:^|\s|["'([{])+\S/g, match => match.toUpperCase());
    ;
    

    capitalize(' javascript'); // -> ' Javascript'
    
    capitalize('бабушка курит трубку');  // -> 'Бабушка Курит Трубку'
    capitalize('località àtilacol')      // -> 'Località Àtilacol'
    
    capitalize(`"quotes" 'and' (braces) {braces} [braces]`);  // -> "Quotes" 'And' (Braces) {Braces} [Braces]