freeCodeCamp/curriculum/challenges/english/10-coding-interview-prep/rosetta-code/strip-control-codes-and-extended-characters-from-a-string.md
Oliver Eyton-Williams ee1e8abd87
feat(curriculum): restore seed + solution to Chinese (#40683)
* feat(tools): add seed/solution restore script

* chore(curriculum): remove empty sections' markers

* chore(curriculum): add seed + solution to Chinese

* chore: remove old formatter

* fix: update getChallenges

parse translated challenges separately, without reference to the source

* chore(curriculum): add dashedName to English

* chore(curriculum): add dashedName to Chinese

* refactor: remove unused challenge property 'name'

* fix: relax dashedName requirement

* fix: stray tag

Remove stray `pre` tag from challenge file.

Signed-off-by: nhcarrigan <nhcarrigan@gmail.com>

Co-authored-by: nhcarrigan <nhcarrigan@gmail.com>
2021-01-12 19:31:00 -07:00

81 lines
2.0 KiB
Markdown

---
id: 5a23c84252665b21eecc8036
title: Strip control codes and extended characters from a string
challengeType: 5
forumTopicId: 302327
dashedName: strip-control-codes-and-extended-characters-from-a-string
---
# --description--
The task is to strip control codes and extended characters from a string. The solution should demonstrate how to achieve each of the following results: A string with control codes and extended characters stripped. In ASCII, the control codes have decimal codes 0 through to 31 and 127. On an ASCII based system, if the control codes are stripped, the resultant string would have all of its characters within the range of 32 to 126 decimal on the ASCII table. On a non-ASCII based system, we consider characters that do not have a corresponding glyph on the ASCII table (within the ASCII range of 32 to 126 decimal) to be an extended character for the purpose of this task.
# --hints--
`strip` should be a function.
```js
assert(typeof strip == 'function');
```
`strip("abc")` should return a string.
```js
assert(typeof strip('abc') == 'string');
```
`strip("\ba\x00b\n\rc\fd\xc3")` should return `"abcd"`.
```js
assert.equal(strip('\ba\x00b\n\rc\fd\xc3'), 'abcd');
```
`strip("\u0000\n abc\u00E9def\u007F")` should return `" abcdef"`.
```js
assert.equal(strip('\u0000\n abc\u00E9def\u007F'), ' abcdef');
```
`strip("a\n\tb\u2102d\u2147f")` should return `"abdf"`.
```js
assert.equal(strip('a\n\tb\u2102d\u2147f'), 'abdf');
```
`strip("Français.")` should return `"Franais."`.
```js
assert.equal(strip('Français.'), 'Franais.');
```
`strip("123\tabc\u0007DEF\u007F+-*/€æŧðłþ")` should return `"123abcDEF+-*/"`.
```js
assert.equal(strip('123\tabc\u0007DEF\u007F+-*/€æŧðłþ'), '123abcDEF+-*/');
```
# --seed--
## --seed-contents--
```js
function strip(s) {
}
```
# --solutions--
```js
function strip(s) {
return s
.split('')
.filter(function(x) {
var n = x.charCodeAt(0);
return 31 < n && 127 > n;
})
.join('');
}
```