feat(curriculum): convert search and replace challenge to lab (#62129)

Co-authored-by: Ilenia <26656284+ilenia-magoni@users.noreply.github.com>
This commit is contained in:
Zaira
2025-09-22 17:43:29 +05:00
committed by GitHub
parent ae6357fe43
commit 2eab3662f5
5 changed files with 141 additions and 0 deletions
+6
View File
@@ -3725,6 +3725,12 @@
"title": "Build a RegEx Sandbox",
"intro": ["In this lab you'll build a regex sandbox."]
},
"lab-smart-word-replacement": {
"title": "Build a Smart Word Replacement Function",
"intro": [
"In this lab, you will use regex to create a function that performs a search and replace operation on a given string."
]
},
"review-javascript-regular-expressions": {
"title": "JavaScript Regular Expressions Review",
"intro": [
@@ -0,0 +1,9 @@
---
title: Introduction to the Build a Smart Word Replacement Function
block: lab-smart-word-replacement
superBlock: full-stack-developer
---
## Introduction to the Build a Smart Word Replacement Function
In this lab, you will use regex to create a function that performs a search and replace operation on a given string.
@@ -0,0 +1,110 @@
---
id: a0b5010f579e69b815e7c5d6
title: Build a Smart Word Replacement Function
challengeType: 26
dashedName: build-a-smart-word-replacement-function
---
# --description--
In this lab, you will create a function that performs a search and replace on the sentence using the arguments provided and then returns the new sentence.
**Note:** Preserve the case of the first character in the original word when you are replacing it. For example if you mean to replace the word `Book` with the word `dog`, it should be replaced as `Dog`
**Objective**: Fulfill the user stories below and get all the tests to pass to complete the lab.
**User Stories:**
1. You should create a function named `myReplace`.
1. The `myReplace` function should take three arguments: a string, a word to be replaced, and the word to replace it with.
1. The `myReplace` function should return the new string with the replacement.
1. You should preserve the case of the first character in the original word when you are replacing it.
# --hints--
You should create a function named `myReplace`.
```js
assert.isFunction(myReplace);
```
`myReplace` should take three arguments.
```js
assert.lengthOf(myReplace, 3);
```
`myReplace("Let us go to the store", "store", "mall")` should return the string `Let us go to the mall`.
```js
assert.deepEqual(
myReplace('Let us go to the store', 'store', 'mall'),
'Let us go to the mall'
);
```
`myReplace("He is Sleeping on the couch", "Sleeping", "sitting")` should return the string `He is Sitting on the couch`.
```js
assert.deepEqual(
myReplace('He is Sleeping on the couch', 'Sleeping', 'sitting'),
'He is Sitting on the couch'
);
```
`myReplace("I think we should look up there", "up", "Down")` should return the string `I think we should look down there`.
```js
assert.deepEqual(
myReplace('I think we should look up there', 'up', 'Down'),
'I think we should look down there'
);
```
`myReplace("This has a spellngi error", "spellngi", "spelling")` should return the string `This has a spelling error`.
```js
assert.deepEqual(
myReplace('This has a spellngi error', 'spellngi', 'spelling'),
'This has a spelling error'
);
```
`myReplace("His name is Tom", "Tom", "john")` should return the string `His name is John`.
```js
assert.deepEqual(
myReplace('His name is Tom', 'Tom', 'john'),
'His name is John'
);
```
`myReplace("Let us get back to more Coding", "Coding", "algorithms")` should return the string `Let us get back to more Algorithms`.
```js
assert.deepEqual(
myReplace('Let us get back to more Coding', 'Coding', 'algorithms'),
'Let us get back to more Algorithms'
);
```
# --seed--
## --seed-contents--
```js
```
# --solutions--
```js
function myReplace(str, before, after) {
if (before.charAt(0) === before.charAt(0).toUpperCase()) {
after = after.charAt(0).toUpperCase() + after.substring(1);
} else {
after = after.charAt(0).toLowerCase() + after.substring(1);
}
return str.replace(before, after);
}
```
@@ -0,0 +1,15 @@
{
"name": "Build a Smart Word Replacement Function",
"isUpcomingChange": false,
"dashedName": "lab-smart-word-replacement",
"helpCategory": "JavaScript",
"blockLayout": "link",
"blockType": "lab",
"challengeOrder": [
{
"id": "a0b5010f579e69b815e7c5d6",
"title": "Build a Smart Word Replacement Function"
}
],
"usesMultifileEditor": true
}
@@ -454,6 +454,7 @@
"lab-palindrome-checker",
"lab-markdown-to-html-converter",
"lab-regex-sandbox",
"lab-smart-word-replacement",
"review-javascript-regular-expressions",
"quiz-javascript-regular-expressions"
]