RegExp:如何使用对象替换第二次出现?

时间:2017-04-06 13:33:20

标签: javascript regex

function convertHTML(str) {
  var objA={'&':'&​amp;','<':'&​lt;','>':'&​gt;','\'':'&​apos;','"':'\&​quot;'}
  var matchStr = str.match(/([&|''|""|>|<])/g)
  var matchStr1=''
  for(var i=0; i<matchStr.length; ++i){

     matchStr1 = str.replace(matchStr[i], objA[matchStr[i]])

  }
  return matchStr1;
}

console.log(convertHTML("Hamburgers < Pizza < Tacos "));

输出我得到的是Hamburgers &​lt; Pizza < Tacos。我想要Hamburgers &​lt; Pizza &​lt; Tacos。那么是否可以使用此代码替换第二次出现的更改?。

2 个答案:

答案 0 :(得分:1)

我建议你使用以下方法。

&#13;
&#13;
{{1}}
&#13;
&#13;
&#13;

答案 1 :(得分:0)

问题在于:

matchStr1 = str.replace(matchStr[i], objA[matchStr[i]])

在每次迭代中,“str”始终是相同的。

您的代码已修复:

function convertHTML(str) {
  var objA={'&':'&​amp;','<':'&​lt;','>':'&​gt;','\'':'&​apos;','"':'\&​quot;'}
  var matchStr = str.match(/([&|''|""|>|<])/g);
  for(var i=0; i<matchStr.length; ++i){
     str = str.replace(matchStr[i], objA[matchStr[i]])
  }
  return str;
}
console.log(convertHTML("Hamburgers < Pizza < Tacos "));