typescript apply regex to split on uppercase and uppercase 1st letter of each word code example

Example 1: javascript uppercase first letter of each word

const str = 'captain picard';

function capitalize(str) {
  return str.charAt(0).toUpperCase() + str.slice(1);
}

const caps = str.split(' ').map(capitalize).join(' ');
caps; // 'Captain Picard'

Example 2: javascript capitalize first letter of each word

// includeAllCaps is optional and defaults to false
// if includeAllCaps is set to true, it will Title Case words with all capital letters

// includeMinorWords is optional and defaults to false
// if includeMinorWords is set to true, it will minor words in the middle of the string

function toTitleCase(str, includeAllCaps, includeMinorWords) {
    includeAllCaps = (includeAllCaps ? (includeAllCaps == true ? true : false) : false);
    includeMinorWords = (includeMinorWords ? (includeMinorWords == true ? true : false) : false);
    var i, j, lowers;
    str = str.replace(/([^\W_]+[^\s-]*) */g, function (txt) {
        if (!/[a-z]/.test(txt) && /[A-Z]/.test(txt) && !includeAllCaps) {
            return txt;
        } else {
            return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
        }
    });

    if (includeMinorWords) {
        return str;
    } else {
        // Certain minor words should be left lowercase unless 
        // they are the first or last words in the string
        lowers = ['A', 'An', 'The', 'And', 'But', 'Or', 'For', 'Nor', 'As', 'At',
            'By', 'For', 'From', 'In', 'Into', 'Near', 'Of', 'On', 'Onto', 'To', 'With'
        ];
        for (i = 0, j = lowers.length; i < j; i++)
            str = str.replace(new RegExp('\\s' + lowers[i] + '\\s', 'g'),
                function (txt) {
                    return txt.toLowerCase();
                });

        return str;
    }
}

toTitleCase("FOO bar"); // FOO Bar
toTitleCase("FOO bar", true); // Foo Bar
toTitleCase("a foo bar"); // A Foo Bar
toTitleCase("a foo in bar"); // A Foo in Bar
toTitleCase("foo of bar"); // Foo of Bar
toTitleCase("foo of bar", false, true); // Foo Of Bar