freeCodeCamp Challenge Guide: Convert HTML Entities

*This my version of the code I used a for loop to check all of the symbols and then replaced them.

function convertHTML(str) {
// :slight_smile:
for(var i=0; i<str.length; i++)
{
switch(str[i])
{
case ‘&’:
str=str.replace(/&/i,’&’);
break;

        case '<':
        str=str.replace(/</i,'&lt;');
        break;
        
        case '>':
        str=str.replace(/>/i,'&gt;');
        break;
        
        case '"':
        str=str.replace(/"/i,'&quot;');
        break;
        
        case "'":
        str=str.replace(/'/i,'&apos;');
        break;
      
    }
}

return str;
}

convertHTML(‘Stuff in “quotation marks”’);
[/quote]

Literally the first time I felt like I came up with a good solution almost completely on my own and it was similar to the advanced meth I am happy with it, regex is starting to feel more comfortable

‘’’

function convertHTML(str) {
var re = /[&"’<>]/g;
var html = {
"&" : “&”,
""":""",
"<" : “<”,
">": “>”,
"’":"’"

};

str = str.replace(re, function(matched) {
return html[matched];

});

return str;
}

convertHTML(‘Stuff in “quotation marks”’);

‘’’

2 Likes

Just my solution. Pretty similar to others

function convertHTML(str) {
  // &colon;&rpar;
  var entities = {"&": "&amp;", "<": "&lt;", ">": "&gt;", '"': '&quot;', "'": '&apos;'};
  return str.replace(/&|<|>|"|'/g, function(match) {
    return entities[match];
  });
}
2 Likes

Not too original, but it’s working :slight_smile:

function convertHTML(str) {
  // &colon;&rpar;
  
  var newStr = str.split("");
  
  var character = ["&", "<", ">", "\"", "'"];
  var entity = ["&amp;", "&lt;", "&gt;", "&quot;", "&apos;"];
  
  for (var i = 0; i < newStr.length; i++ ) {
    
    if (character.indexOf(newStr[i]) > -1) {
      newStr[i] = entity[character.indexOf(newStr[i])];
    }
    
  }
  
  var result = newStr.join("");
  return result;

}

convertHTML("Dolce & Gabbana");
1 Like
function convertHTML(str) {
  
  str = str.replace(/&/g, "&amp;");
  str = str.replace(/</g, "&lt;");
  str = str.replace(/>/g, "&gt;");
  str = str.replace(/"/g, "&quot;");
  str = str.replace(/'/g, "&apos;");

  return str;
}

convertHTML("Hamburgers < Pizza < Tacos");
1 Like
function convertHTML(str) {
  var htmlEntities=[
    ['&','&amp;'],
    ['<','&lt;'],
    ['>','&gt;'],
    ['\"','&quot;'],
    ['\'',"&apos;"]
  ];
  for(var i=0; i<htmlEntities.length; i++) {
    var re = new RegExp(htmlEntities[i][0], "g");
    str=str.replace(re, htmlEntities[i][1]);
  }
return str;
}

Here’s mine, not the most efficient.

function convertHTML(str) {
    var replacements = [
        {symbolInString: "&",
        html: "&amp;"},
        {symbolInString: "<",
        html: "&lt;"},
        {symbolInString: ">",
        html: "&agt;"},
        {symbolInString: "'",
        html: "&apos"},
        {symbolInString: '"',
        html: "&quot;"}
    ]
    var x = str.replace(/[&|'|"|<|>]/g, function (symbol) {
        
        for (var i = 0; i < replacements.length; i++) {
            
             if (symbol === replacements[i].symbolInString) {
                 return replacements[i].html;
            }
        }        
    })
      return x;
}
1 Like