mirror of
https://github.com/freeCodeCamp/freeCodeCamp.git
synced 2026-05-28 18:26:54 +00:00
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:
@@ -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.
|
||||
+110
@@ -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"
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user