FCC_Intermediate Algorithm_Convert HTML Entities

1.任务及要求

Convert HTML Entities


将字符串中的字符 &<>" (双引号), 以及 ' (单引号)转换为它们对应的 HTML 实体。

如果你被卡住了,记得开大招 Read-Search-Ask。尝试与他人结伴编程、编写你自己的代码。

2.我的解法

// 思路梳理:
// 1,将字符串分割存储为数组
// 2,将目标字符替换为HTML实体
// 3,组合字符串并输出
// 但是,任务给提供了RegExp,是想让用正则表达式实现?
// 正则表达式30分钟入门教程:https://deerchao.cn/tutorials/regex/regex.htm (当然30分钟是入不了门的)
// 在线正则表达式测试:https://deerchao.cn/tools/wegester/
// 尝试使用正则匹配并替换;

 1 function convert(str) {
 2   // &colon;&rpar;
 3 
 4   var strArr = str.split("");
 5   
 6   for(var i = 0; i < strArr.length; i ++) {
 7     switch(strArr[i]) {
 8       case "&":
 9         strArr[i] = "&amp;";
10         break;
11       case "<":
12         strArr[i] = "&lt;";
13         break;
14       case ">":
15         strArr[i] = "&gt;";
16         break;
17       case '"':
18         strArr[i] = "&quot;";
19         break;
20       case "'":
21         strArr[i] = "&apos;";
22         break;
23     }
24   }
25   str = strArr.join("");
26 // 利用正则表达式匹配并替换
27 //  str = str.replace(/[&]/g,"&amp;").replace(/[<]/g,"&lt;").replace(/[>]/g,"&gt;").replace(/["]/g,"&quot;").replace(/[']/g,"&apos;");
28   return str;
29 }
30 
31 convert("Dolce & Gabbana");

3.发现的其他解法

// 更好的方法:
// CSDN:https://blog.csdn.net/qq_32623363/article/details/76982829

 1 function convert(str) {
 2   var regObj = {
 3     "&":"&amp;",
 4     "<":"&lt;",
 5     ">":"&gt;",
 6     '"':"&quot;",
 7     "'":"&apos;"
 8   };
 9   var reg = /[&<>"']/g;
10 
11   var arr = str.match(reg);
12   if(arr){
13     for(var i in arr){
14       str = str.replace(arr[i],regObj[arr[i]]);
15     }
16   }
17   return str;
18 }

// 另外一种:
// CSDN:https://blog.csdn.net/funkstill/article/details/89004935

 1 function convert(str) {
 2   // &colon;&rpar;
 3   var r='',htmlObj = {'&':'&amp;','>':'&gt;','<':'&lt;','"':'&quot;','\'':'&apos;'};
 4   str.split('').map(function(s){
 5     if(/^[>"<'&]/.test(s)){
 6       r+=htmlObj[s];
 7     }else{
 8       r+=s;
 9     }
10   });
11   return r;
12 }
13  
14 convert("Dolce & Gabbana");

猜你喜欢

转载自www.cnblogs.com/yoursatan/p/12430361.html