/* Problem statement and Explanation : https://www.codeproject.com/Tips/162540/Letter-Case-Conversion-Algorithms-Title-Case-Toggl */ /** * The TitleCaseConversion converts a string into a title case string. * @param {String} inputString input string * @returns {String} */ const TitleCaseConversion = (inputString) => { // Extract all space separated string. const stringCollections = inputString.split(' ').map(word => { let firstChar = '' // Get a character code by the use charCodeAt method. const firstCharCode = word[0].charCodeAt() // If the character code lies between 97 to 122 it means they are in the lower case so convert it. if (firstCharCode >= 97 && firstCharCode <= 122) { // Convert the case by use of the above explanation. firstChar += String.fromCharCode(firstCharCode - 32) } else { // Else store the characters without any modification. firstChar += word[0] } const newWordChar = word.slice(1).split('').map(char => { // Get a character code by the use charCodeAt method. const presentCharCode = char.charCodeAt() // If the character code lies between 65 to 90 it means they are in the upper case so convert it. if (presentCharCode >= 65 && presentCharCode <= 90) { // Convert the case by use of the above explanation. return String.fromCharCode(presentCharCode + 32) } // Else return the characters without any modification. return char }) // return the first converted character and remaining character string. return firstChar + newWordChar.join('') }) // convert all words in a string and return it. return stringCollections.join(' ') } module.exports = TitleCaseConversion