154 lines
9.6 KiB
Markdown
154 lines
9.6 KiB
Markdown
![]() |
---
|
|||
|
title: Convert HTML Entities
|
|||
|
localeTitle: Преобразование HTML-объектов
|
|||
|
---
|
|||
|

|
|||
|
|
|||
|
 Не забудьте использовать **`Read-Search-Ask`** если вы застряли. Попробуйте подключить программу  и напишите свой собственный код 
|
|||
|
|
|||
|
###  Проблема Объяснение:
|
|||
|
|
|||
|
* Вам нужно создать программу, которая будет конвертировать объекты HTML из строки в соответствующие HTML-объекты. Есть только несколько, поэтому вы можете использовать разные методы.
|
|||
|
|
|||
|
##  Подсказка: 1
|
|||
|
|
|||
|
* Вы можете использовать регулярные выражения, но в этом случае я этого не делал.
|
|||
|
|
|||
|
> _попытаться решить проблему сейчас_
|
|||
|
|
|||
|
##  Подсказка: 2
|
|||
|
|
|||
|
* Вы выиграете от диаграммы со всеми html-объектами, чтобы вы знали, какие из них являются правильными.
|
|||
|
|
|||
|
> _попытаться решить проблему сейчас_
|
|||
|
|
|||
|
##  Подсказка: 3
|
|||
|
|
|||
|
* Вы должны отделить строку и работать с каждым символом, чтобы преобразовать правильные, а затем присоединиться ко всему резервному копированию.
|
|||
|
|
|||
|
> _попытаться решить проблему сейчас_
|
|||
|
|
|||
|
## Осторожно, спойлеры!
|
|||
|
|
|||
|

|
|||
|
|
|||
|
**Решение впереди!**
|
|||
|
|
|||
|
##  Решение базового кода:
|
|||
|
|
|||
|
```javascript
|
|||
|
function convertHTML(str) {
|
|||
|
// Split by character to avoid problems.
|
|||
|
|
|||
|
var temp = str.split('');
|
|||
|
|
|||
|
// Since we are only checking for a few HTML elements I used a switch
|
|||
|
|
|||
|
for (var i = 0; i < temp.length; i++) {
|
|||
|
switch (temp[i]) {
|
|||
|
case '<':
|
|||
|
temp[i] = '<';
|
|||
|
break;
|
|||
|
case '&':
|
|||
|
temp[i] = '&';
|
|||
|
break;
|
|||
|
case '>':
|
|||
|
temp[i] = '>';
|
|||
|
break;
|
|||
|
case '"':
|
|||
|
temp[i] = '"';
|
|||
|
break;
|
|||
|
case "'":
|
|||
|
temp[i] = "'";
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
temp = temp.join('');
|
|||
|
return temp;
|
|||
|
}
|
|||
|
|
|||
|
//test here
|
|||
|
convertHTML("Dolce & Gabbana");
|
|||
|
```
|
|||
|
|
|||
|
### Код Объяснение:
|
|||
|
|
|||
|
Объясните решение здесь и добавьте соответствующие ссылки
|
|||
|
|
|||
|
#### Связанные ссылки
|
|||
|
|
|||
|
* [str.split ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split)
|
|||
|
* [arr.join ()](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/join)
|
|||
|
* [инструкция switch](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/switch)
|
|||
|
|
|||
|
 [Код запуска](https://repl.it/CLnP/0)
|
|||
|
|
|||
|
##  Решение промежуточного кода:
|
|||
|
```
|
|||
|
function convertHTML(str) {
|
|||
|
//Chaining of replace method with different arguments
|
|||
|
str = str.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"').replace(/'/g,"'");
|
|||
|
return str;
|
|||
|
}
|
|||
|
|
|||
|
// test here
|
|||
|
convertHTML("Dolce & Gabbana");
|
|||
|
```
|
|||
|
|
|||
|
 [Код запуска](https://repl.it/CLnQ/0)
|
|||
|
|
|||
|
### Код Объяснение:
|
|||
|
|
|||
|
Объясните решение здесь и добавьте соответствующие ссылки
|
|||
|
|
|||
|
#### Связанные ссылки
|
|||
|
|
|||
|
* [str.replace ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace)
|
|||
|
* [Регулярные выражения](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp)
|
|||
|
|
|||
|
##  Расширенное решение для кода:
|
|||
|
|
|||
|
```javascript
|
|||
|
function convertHTML(str) {
|
|||
|
// Use Object Lookup to declare as many HTML entities as needed.
|
|||
|
htmlEntities={
|
|||
|
'&':'&',
|
|||
|
'<':'<',
|
|||
|
'>':'>',
|
|||
|
'"':'"',
|
|||
|
'\'':"'"
|
|||
|
};
|
|||
|
//Use map function to return a filtered str with all entities changed automatically.
|
|||
|
return str.split('').map(entity => htmlEntities[entity] || entity).join('');
|
|||
|
}
|
|||
|
|
|||
|
// test here
|
|||
|
convertHTML("Dolce & Gabbana");
|
|||
|
```
|
|||
|
|
|||
|
 [Код запуска](https://repl.it/CLnR/0)
|
|||
|
|
|||
|
### Код Объяснение:
|
|||
|
|
|||
|
* Создайте объект, чтобы использовать функциональность Lookup, чтобы легко находить символы.
|
|||
|
* Разделите исходную строку символами и используйте карту, чтобы проверить измененный объект html или использовать тот же самый. В качестве альтернативы вы можете использовать Regex `str.replace(/&|<|>|"|'/gi` .
|
|||
|
* Добавлена функция a, которая возвращает преобразованный объект или исходный, если конверсия отсутствует. Если вы перейдете по маршруту регулярного выражения, вам просто нужно вернуть совпадающие удары. `return html[entity];`
|
|||
|
* Наконец, мы снова присоединяем все символы.
|
|||
|
|
|||
|
**Обратите внимание,** что если вы отправили маршрут регулярного выражения, вам не нужно ничего присоединяться, просто убедитесь, что вы вернули всю операцию или сохранили ее в переменной, а затем вернете ее.
|
|||
|
|
|||
|
#### Связанные ссылки
|
|||
|
|
|||
|
* [str.split ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split)
|
|||
|
* [arr.map ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)
|
|||
|
* [arr.join ()](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/join)
|
|||
|
|
|||
|
##  ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:
|
|||
|
|
|||
|
*  **НЕ** добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это **_похоже, но лучше_** , попробуйте объединить (или заменить) существующее подобное решение.
|
|||
|
* Добавьте объяснение своего решения.
|
|||
|
* Классифицируйте решение в одной из следующих категорий - **Basic** , **Intermediate** и **Advanced** . 
|
|||
|
* Пожалуйста, добавьте свое имя пользователя, только если вы добавили **соответствующее основное содержимое** . (  **_НЕ_** _удаляйте существующие имена пользователей_ )
|
|||
|
|
|||
|
> Видеть  [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) для [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) для справки.
|