我的功能只是用实体名称替换其中两个字符?
My function is only replacing two of the characters with their entity name?
我不明白为什么函数只用它们各自的实体名称替换我的“&”和“””。
有人可以阅读它并看看他们是否可以帮助我吗?
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 = ['&', '<', '>', '"', '''];
// 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 = ['&', '<', '>', '"', '''];
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);
我不明白为什么函数只用它们各自的实体名称替换我的“&”和“””。
有人可以阅读它并看看他们是否可以帮助我吗?
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 = ['&', '<', '>', '"', '''];
// 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 = ['&', '<', '>', '"', '''];
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);