Files
Pablo Rubianes 5c2bd53d5c fixes the Advanced Code Solution to make it work when run tests in the Convert HTML Entities exercise (#24930)
* fix in the Advanced Code Solution to make it work when run tests

* making htmlEntities a const to fix the example
2018-10-25 13:41:36 -07:00

9.6 KiB
Raw Blame History

title, localeTitle
title localeTitle
Convert HTML Entities Преобразование HTML-объектов

Объекты HTML & '<> "

:triangular_flag_on_post: Не забудьте использовать Read-Search-Ask если вы застряли. Попробуйте подключить программу :busts_in_silhouette: и напишите свой собственный код :pencil:

:checkered_flag: Проблема Объяснение:

  • Вам нужно создать программу, которая будет конвертировать объекты HTML из строки в соответствующие HTML-объекты. Есть только несколько, поэтому вы можете использовать разные методы.

:speech_balloon: Подсказка: 1

  • Вы можете использовать регулярные выражения, но в этом случае я этого не делал.

попытаться решить проблему сейчас

:speech_balloon: Подсказка: 2

  • Вы выиграете от диаграммы со всеми html-объектами, чтобы вы знали, какие из них являются правильными.

попытаться решить проблему сейчас

:speech_balloon: Подсказка: 3

  • Вы должны отделить строку и работать с каждым символом, чтобы преобразовать правильные, а затем присоединиться ко всему резервному копированию.

попытаться решить проблему сейчас

Осторожно, спойлеры!

предупреждающий знак

Решение впереди!

:beginner: Решение базового кода:

    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] = '&lt;'; 
            break; 
          case '&': 
            temp[i] = '&amp;'; 
            break; 
          case '>': 
            temp[i] = '&gt;'; 
            break; 
          case '"': 
            temp[i] = '&quot;'; 
            break; 
          case "'": 
            temp[i] = "&apos;"; 
            break; 
        } 
      } 
 
      temp = temp.join(''); 
      return temp; 
    } 
 
    //test here 
    convertHTML("Dolce & Gabbana"); 

Код Объяснение:

Объясните решение здесь и добавьте соответствующие ссылки

Связанные ссылки

:rocket: Код запуска

:sunflower: Решение промежуточного кода:

function convertHTML(str) { 
 //Chaining of replace method with different arguments 
  str = str.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;').replace(/'/g,"&apos;"); 
 return str; 
 } 
 
 // test here 
 convertHTML("Dolce & Gabbana"); 

:rocket: Код запуска

Код Объяснение:

Объясните решение здесь и добавьте соответствующие ссылки

Связанные ссылки

:rotating_light: Расширенное решение для кода:

    function convertHTML(str) { 
      // Use Object Lookup to declare as many HTML entities as needed. 
      const htmlEntities={ 
        '&':'&amp;', 
        '<':'&lt;', 
        '>':'&gt;', 
        '"':'&quot;', 
        '\'':"&apos;" 
      }; 
      //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"); 

:rocket: Код запуска

Код Объяснение:

  • Создайте объект, чтобы использовать функциональность Lookup, чтобы легко находить символы.
  • Разделите исходную строку символами и используйте карту, чтобы проверить измененный объект html или использовать тот же самый. В качестве альтернативы вы можете использовать Regex str.replace(/&|<|>|"|'/gi .
  • Добавлена ​​функция a, которая возвращает преобразованный объект или исходный, если конверсия отсутствует. Если вы перейдете по маршруту регулярного выражения, вам просто нужно вернуть совпадающие удары. return html[entity];
  • Наконец, мы снова присоединяем все символы.

Обратите внимание, что если вы отправили маршрут регулярного выражения, вам не нужно ничего присоединяться, просто убедитесь, что вы вернули всю операцию или сохранили ее в переменной, а затем вернете ее.

Связанные ссылки

:clipboard: ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:

  • :warning: НЕ добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это похоже, но лучше , попробуйте объединить (или заменить) существующее подобное решение.
  • Добавьте объяснение своего решения.
  • Классифицируйте решение в одной из следующих категорий - Basic , Intermediate и Advanced . :traffic_light:
  • Пожалуйста, добавьте свое имя пользователя, только если вы добавили соответствующее основное содержимое . ( :warning: НЕ удаляйте существующие имена пользователей )

Видеть :point_right: Wiki Challenge Solution Template для Wiki Challenge Solution Template для справки.