diff --git a/Conversions/TitleCaseConversion.js b/Conversions/TitleCaseConversion.js new file mode 100644 index 000000000..2db9620ea --- /dev/null +++ b/Conversions/TitleCaseConversion.js @@ -0,0 +1,42 @@ +/* + 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) => { + // Extact all space seprated 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