Intermediate Algorithm Scripting - Search and Replace

Tell us what’s happening: Please, find below my code so far. It’s working when the word to replace starts by capital letter indeed, but failing when it’s not. Any hint about what’s wrong with it?
Thanks in advance :slight_smile:
Describe your issue in detail here.

Your code so far

function myReplace(str, before, after) {
  
  let capitalL = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
  if (str.search(before) != -1 && capitalL.indexOf(str[before[0]])) {
    return str.replace(before, after.slice(0, 1).toUpperCase().concat(after.slice(1)));
  
  }
  return str.replace(before, after.toLowerCase())
}

myReplace("A quick brown fox jumped over the lazy dog", "jumped", "leaped");
myReplace("He is Sleeping on the couch", "Sleeping", "sitting")

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36

Challenge: Intermediate Algorithm Scripting - Search and Replace

Link to the challenge:

What do you think this code is doing?

My intention with that code was to check in the string if the first letter of the word that contains the argument before is a capital one, but I guess I’m wrong :neutral_face:

I replaced it for the code below, but still same issue:

capitalL.indexOf(str[before[0]]) != -1 )

That is the only bit of your code which isn’t quite working.

Let’s break it down:

capitalL.indexOf(str[before[0]])

Let’s say the function is called as:

myReplace("He is Sleeping on the couch", "Sleeping", "sitting")

So, before[0] would be ‘S’, which would make str[before[0]] equal to str['S'], which doesn’t make any sense (i.e. it will return undefined). You don’t need to include str here at all. You are only checking if the first letter of before is a capital (i.e. it appears in capitalL).

Having corrected that, you also need to determine what kind of value indexOf will return when it looks for the letter ‘S’ in capitalL. If it finds it, it will return the index number where it is first found. If it doesn’t find it, it would return -1. So you want your condition to check that indexOf doesn’t return -1.

thank you very much for the help and mostly for the detailed explanation :slight_smile: having corrected that it works like a charm:

MOD EDIT: Solution removed.

Glad I could help. I removed your solution only because we like to avoid solutions being posted on the forum.

1 Like

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.