javascript - 为什么这个 switch 语句没有成功替换 String 的字符来解决这个 Javascript 算法?
问题描述
问题
将字符串中的字符 &、<、>、"(双引号)和 '(撇号)转换为其对应的 HTML 实体。
我的代码
function convertHTML(str) {
let tempArr = ['a'];
let newArr = [];
let regex = /[&<>"']/
str.split('')
.forEach((item)=>{
switch(item){
case '&': tempArr[0] = '&';
break;
case '<': tempArr[0] = '<';
break;
case '>': tempArr[0] = '>';
break;
case '"': tempArr[0] = '"';
break;
case "'": tempArr[0] = '&apos';
break;
}
if(regex.test(item)==true){
item.replace(item, tempArr[0])
}
newArr.push(item);
})
return newArr;
}
console.log(convertHTML("Dolce & Gabbana"));
根据我对代码的理解,这应该可行。所以我的理解肯定有问题。(我仍然必须加入阵列,但替换不起作用)。
解决方案
这是什么都不做:
item.replace(item, tempArr[0])
replace
不会改变它的任何论点。它返回一个您不使用的新字符串。
但由于item
只是一个字符,您应该为它分配替换:
item = tempArr[0]
注意:我不知道你为什么将它tempArr
用作数组,因为它除了 1 个元素之外没有其他任何东西,所以它也可以是一个字符串。
这是完成工作的更简单方法:
function convertHTML(str) {
let entity = {
"'": "&apos",
"&": "&",
"<": "<",
">": ">",
'"': """,
};
return str.replace(/[&<>"']/g, item => entity[item]);
}
console.log(convertHTML("Dolce & Gabbana"));
推荐阅读
- python - 如何在不使用 %s 的情况下调用各种字符串?
- java - Selenium:由于线程错误,无法滚动到单击不可见的元素:元素不可见
- firebase - TypeError:functions.pubsub.schedule 不是函数
- ruby-on-rails - 调用 `format.js` 导致“找不到模板”警告
- javascript - 链二选择 Angular Guard 中的 rxjs 存储
- sql - Django:如何知道原始 sql 和模型查询集所用的时间
- javascript - 在 TypeScript 中从数组中累积映射
- java - 您可以创建一个单独的方法来创建 JFrame 大小吗?
- python - 如何在 QWidget 中居中背景图像
- c# - SonarScanner 未在 SonarQube 中发布结果