Searc e substituir a solução da FCC

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
Bored Boar