freeCodeCamp/guide/spanish/certifications/javascript-algorithms-and-d.../intermediate-algorithm-scri.../convert-html-entities/index.md

7.4 KiB

title localeTitle
Convert HTML Entities Convertir entidades HTML

Entidades HTML y '<> "

:triangular_flag_on_post: Recuerda usar Read-Search-Ask si te atascas. Tratar de emparejar el programa :busts_in_silhouette: y escribe tu propio código :pencil:

:checkered_flag: Explicación del problema:

  • Debe crear un programa que convierta las entidades HTML de una cadena a sus entidades HTML correspondientes. Solo hay unos pocos para que puedas usar diferentes métodos.

:speech_balloon: Sugerencia: 1

  • Puedes usar expresiones regulares, pero en este caso no lo hice.

intenta resolver el problema ahora

:speech_balloon: Sugerencia: 2

  • Usted se beneficiará de un gráfico con todas las entidades html para que sepa cuáles son las correctas para colocar.

intenta resolver el problema ahora

:speech_balloon: Sugerencia: 3

  • Debe separar la cadena y trabajar con cada carácter para convertir los correctos y luego unir todo de nuevo.

intenta resolver el problema ahora

¡Alerta de spoiler!

señal de advertencia

¡Solución por delante!

:beginner: Solución de código básico:

    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"); 

Explicación del código:

Explica la solución aquí y agrega cualquier enlace relevante.

Enlaces relevantes

:rocket: Ejecutar código

:sunflower: Solución de código intermedio:

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: Ejecutar código

Explicación del código:

Explica la solución aquí y agrega cualquier enlace relevante.

Enlaces relevantes

:rotating_light: Solución avanzada de código:

    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: Ejecutar código

Explicación del código:

  • Cree un objeto para usar la funcionalidad de búsqueda para encontrar fácilmente los caracteres.
  • Divida la cadena original por caracteres y use el mapa para verificar la entidad html modificada o use la misma. Alternativamente, puede usar Regex str.replace(/&|<|>|"|'/gi .
  • Se agrega la función a, que es lo que devuelve la entidad convertida o la original si no hay conversión. Si sigues la ruta regular, solo tienes que devolver los hits emparejados. return html[entity];
  • Por último nos unimos a todos los personajes una vez más.

Tenga en cuenta que si tomó la ruta de expresiones regulares, entonces no necesita unirse a nada, solo asegúrese de devolver toda la operación o de guardarla en una variable y luego devolverla.

Enlaces relevantes

:clipboard: NOTAS PARA LAS CONTRIBUCIONES:

  • :warning: NO agregue soluciones que sean similares a las soluciones existentes. Si cree que es similar pero mejor , intente fusionar (o reemplazar) la solución similar existente.
  • Agregue una explicación de su solución.
  • Categorice la solución en una de las siguientes categorías: Básica , Intermedia y Avanzada . :traffic_light:
  • Agregue su nombre de usuario solo si ha agregado algún contenido principal relevante . ( :warning: NO elimine ningún nombre de usuario existente )

Ver :point_right: Wiki Challenge Solution Template para referencia.