function upperCaseFirst(inputStr) { var valueOfFirstChar = inputStr.charCodeAt(0); console.log('Value of first character:', valueOfFirstChar); var upperCaseLetter = String.fromCharCode(valueOfFirstChar - 32); console.log('Uppercase first character:', upperCaseLetter); var restOfString = inputStr.slice(1); console.log('Rest of the string:', restOfString); var finalResult = upperCaseLetter + restOfString; console.log('Final result:', finalResult); return finalResult; } var upperCaseResult = upperCaseFirst('goldfish'); console.log(upperCaseResult) /****************************************************************/ function titleCase(inputStr) { var tokens = inputStr.split(' '); console.log('Word tokens:', tokens); // Option 1: Use map() var upperCaseTokens1 = tokens.map(word => upperCaseFirst(word)); console.log('UpperCase1 word tokens:', upperCaseTokens1); // Option 2: Use a for loop var upperCaseTokens2 = []; for (var i = 0; i < tokens.length; i++) { upperCaseTokens2.push(upperCaseFirst(tokens[i])); } console.log('UpperCase2 word tokens:', upperCaseTokens2); var finalResult = upperCaseTokens1.join(' '); console.log('Final result:', finalResult); return finalResult; } var titleCaseResult = titleCase('learn how to code for beginners'); console.log(titleCaseResult, "\n\n"); function titleCase2(inputStr) { return inputStr.split(' ').map(w => upperCaseFirst(w)).join(' '); } console.log(titleCase2('i am a way shorter implementation')); /****************************************************************/ function replaceChar(inputStr, replaceThis, withThis) { var retval = []; for (var i = 0; i < inputStr.length; i++) { if (inputStr[i] === replaceThis) { retval.push(withThis); } else { retval.push(inputStr[i]); } } return retval.join(''); } console.log(replaceChar('hello world', 'l', 'X')); // heXXo worXd /****************************************************************/ function trimString(inputStr) { // Step 1 var firstIndex = 0; while (firstIndex < inputStr.length && inputStr[firstIndex] === ' ') { ++firstIndex; } console.log('Index of first non-whitespace character:', firstIndex); // Step 2 var secondIndex = inputStr.length - 1; while (secondIndex > firstIndex && inputStr[secondIndex] === ' ') { --secondIndex; } console.log('Index of second non-whitespace character:', secondIndex); // Step 3 return inputStr.slice(firstIndex, secondIndex + 1); } // Test our algorithm var untrimmedString = ' i need trimming '; console.log('Length of untrimmed string:', untrimmedString.length); var trimmedResult = trimString(untrimmedString); console.log('After trimming:', trimmedResult); console.log('Length of trimmed string:', trimmedResult.length); /****************************************************************/ function reverseString1(inputStr) { var retval = []; var tokens = inputStr.split(''); for (var i = tokens.length - 1; i >= 0; i--) { retval.push(inputStr[i]); } return retval.join(''); } console.log(reverseString1('Hello World')); // dlroW olleH function reverseString2(inputStr) { var retval = new Array(inputStr.length); var tokens = inputStr.split(''); for (var i = 0, j = tokens.length - 1; i <= j; i++ , j--) { retval[i] = tokens[j]; retval[j] = tokens[i] } return retval.join(''); } console.log(reverseString2('Hello World')); // dlroW olleH