function myReplace(str, before, after) {
let regExp = /^[A-Z]/; // checks if a word starts with capital letter
let replaceIndex = str.toLowerCase().split(' ').indexOf(before.toLowerCase());
//replace index splits the string and returns the index of the word to be replaced
if(regExp.test(str.split(' ')[replaceIndex])){
return str.replace(new RegExp(`${before}`, 'i'), after.replace(after.charAt(0), after.charAt(0).toUpperCase()))
// this checks if the word to be replaced (before) starts with a capital letter and changes the first letter
//and changes the first letter of the replacement word (after) to uppercase if it is true
// it then replaces the word to be replaced (before) with our new replacement word (after) that has an
// first letter
}else{
return str.replace(new RegExp(`${before}`, 'i'), after.replace(after.charAt(0), after.charAt(0).toLowerCase()))
// if the first condition returned false, this converts the first letter of the replacement word (after)
// to lowercase and then replaces the word to be replaced (before) with our new replacement word (after)
// that has it's first letter now in lowercase
}
}
console.log(myReplace("He is sleeping on the couch", "Sleeping", "Sitting")); // he is sitting on the couch
console.log(myReplace("He is Sleeping on the couch", "Sleeping", "sitting")); // he is Sitting on the couch