Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions Conversions/TitleCaseConversion.js
Original file line number Diff line number Diff line change
@@ -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