gpt4 book ai didi

javascript - 我的函数只是用实体名称替换其中两个字符?

转载 作者:行者123 更新时间:2023-11-28 03:16:34 25 4
gpt4 key购买 nike

我不明白为什么该函数只用它们各自的实体名称替换我的“&”和“”。

有人可以读一下它并看看他们是否可以帮助我吗?

function convertHTML(str) {


var HTML = ['&', '<', '>', '"', '''];

for(let i=0; i< str.length; i++) {
if(str[i] == '&') {
return str.replace('&', HTML[0]);
}
if(str[i] == "<") {
return str.replace("<", HTML[1]);
}
if(str[i] == '>') {
return str.replace('>', HTML[2]);
}
if (str[i] == '"') {
return str.replace('"', HTML[3]);
}
if(str[i] == "'") {
return str.replace("'", HTML[4]);
}
}
return str;
}

convertHTML("Dolce & Gabbana");

最佳答案

为了使您的代码正常工作,您需要删除每个 if 语句中的 return (请注意,我克隆了该字符串,因为您循环遍历它,并且 str.length 将每次更换后都保持变化)

function convertHTML(str) {
var HTML = ['&amp;', '&lt;', '&gt;', '&quot;', '&apos;'];
// clone input string
let result = str.slice(0);

for(let i=0; i< str.length; i++) {
if(str[i] == '&') {
result = result.replace('&', HTML[0]);
}
if(str[i] == "<") {
result = result.replace("<", HTML[1]);
}
if(str[i] == '>') {
result = result.replace('>', HTML[2]);
}
if (str[i] == '"') {
result = result.replace('"', HTML[3]);
}
if(str[i] == "'") {
result = result.replace("'", HTML[4]);
}
}

return result;
}

const result = convertHTML("Dolce & Gabbana ' and < yes ");
console.log('result => ', result);

另一种方法是定义查找和替换数组并使用 RegExp替换所有出现的地方

function convertHTML(str) {
const replace = ['&amp;', '&lt;', '&gt;', '&quot;', '&apos;'];
const lookup = ['&', '<', '>', '"', '\''];
lookup.forEach((item, index) => {
const regEx = new RegExp(item);
str = str.replace(regEx, replace[index]);
});
return str;
}

const result = convertHTML("Dolce & Gabbana ' and < yes ");
console.log('result => ', result);

关于javascript - 我的函数只是用实体名称替换其中两个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59595658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com