diff --git a/StringsAndTings.js b/StringsAndTings.js index 4fdca47..e2fc90f 100644 --- a/StringsAndTings.js +++ b/StringsAndTings.js @@ -2,28 +2,63 @@ class StringsAndTings { // @return string with identical content, and the first character capitalized camelCase(str){ - return null; + let strSplit = str.split(" "); + for (let i = 0; i < strSplit.length; i++) { + let word = strSplit[i]; + strSplit[i] = word[0].toUpperCase() + word.substring(1); + } + return strSplit.join(" "); } //@return string with identical contents, with each word individually in reverse order reverseString(str){ - return null; + let reversed = ""; + for (let i = str.length - 1; i >= 0; i--) { + reversed += str[i]; + } + return reversed; } + reverseWords(str){ + let words = []; + words = str.match(/\S+/g); + let result = ""; + for (let i = 0; i < words.length; i++) { + result += words[i].split("").reverse().join("") + " "; + } + return result.trim(); + } // @return string with identical contents, in reverse order, with first character capitalized reverseThenCamelCase(str){ - return null; + let reversed = ""; + for (let i = str.length - 1; i >= 0; i--) { + reversed += str[i]; + } + let upperCase = reversed.split(" "); + for (let i = 0; i < upperCase.length; i ++) { + let word = upperCase[i]; + upperCase[i] = word[0].toUpperCase() + word.substring(1); + } + return upperCase.join(" "); } // @return string with identical contents excluding first and last character removeFirstAndLastCharacter(str){ - return null; + let result = str.slice(1, -1); + return result; } // @return string with identical characters, each with opposite casing invertCasing(str){ - return null; + let newWord = []; + for ( let i = 0; i < str.length; i++) { + if ( str[i] == str[i].toLowerCase()) { + newWord[i] = str[i].toUpperCase(); + } else { + newWord[i] = str[i].toLowerCase(); + } + } + return newWord.join(""); + } } -} - module.exports = StringsAndTings; \ No newline at end of file diff --git a/StringsAndTings.test.js b/StringsAndTings.test.js index 689b63d..31948d2 100644 --- a/StringsAndTings.test.js +++ b/StringsAndTings.test.js @@ -8,7 +8,7 @@ test("camelCaseTest", () => { let input = "she sells sea shells"; let expected = "She Sells Sea Shells"; - let actual = stringsAndTings.camelCase(15); + let actual = stringsAndTings.camelCase(input); expect(actual).toEqual(expected); }); @@ -19,7 +19,7 @@ test("reverseTest", () => { let input = "she sells sea shells"; let expected = "sllehs aes slles ehs"; - let actual = stringsAndTings.camelCase(15); + let actual = stringsAndTings.reverseString(input); expect(actual).toEqual(expected); }); @@ -30,7 +30,7 @@ test("reverseWordsTest", () => { let input = "she sells sea shells"; let expected = "ehs slles aes sllehs"; - let actual = stringsAndTings.camelCase(15); + let actual = stringsAndTings.reverseWords(input); expect(actual).toEqual(expected); }); @@ -41,7 +41,7 @@ test("reverseThenCamelCaseTest", () => { let input = "she sells sea shells"; let expected = "Sllehs Aes Slles Ehs"; - let actual = stringsAndTings.camelCase(15); + let actual = stringsAndTings.reverseThenCamelCase(input); expect(actual).toEqual(expected); }); @@ -52,7 +52,7 @@ test("removeFirstAndLastCharacterTest", () => { let input = "she sells sea shells"; let expected = "he sells sea shell"; - let actual = stringsAndTings.camelCase(15); + let actual = stringsAndTings.removeFirstAndLastCharacter(input); expect(actual).toEqual(expected); }); @@ -64,7 +64,7 @@ test("invertCasingTest1", () => { let input = "shE sells SEA sHeLlS"; let expected = "SHe SELLS sea ShElLs"; - let actual = stringsAndTings.camelCase(15); + let actual = stringsAndTings.invertCasing(input); expect(actual).toEqual(expected); });