在JavaScript中将&amp替换为&,将&lt替换为<,将&gt替换为>。

7

我希望使用JavaScript将&amp替换为&。这是我的示例代码。EmployeeCode可能包含&。EmployeeCode从Datagrid中选择,然后在“txtEmployeeCode”文本框中显示。但是,如果EmployeeCode包含任何&,则会在文本框中显示&amp。如何从EmployeeCode中删除&amp?有人能帮忙吗...

function closewin(EmployeeCode) {
     opener.document.Form1.txtEmployeeCode.value = EmployeeCode;
     this.close();
}

使用JavaScript的'replace'函数。 - Tanveer Shaikh
4个回答

13

使用这个:

function unEntity(str){
   return str.replace(/&amp;/g, "&").replace(/&lt;/g, "<").replace(/&gt;/g, ">");
}

function closewin(EmployeeCode) {
     opener.document.Form1.txtEmployeeCode.value = unEntity(EmployeeCode);
     this.close();
}

可选项 如果您正在使用jQuery,则此代码将解码任何HTML实体(不仅限于 &amp;&lt;&gt;):

function unEntity(str){
   return $("<textarea></textarea>").html(str).text();
}

干杯


我改正了。我应该更仔细地阅读问题。 - MultiplyByZer0
正则表达式?!你能不能让它更低效一些?也许jQuery可以帮忙。 - bjb568
@bjb568 微观优化是有害的,正则表达式非常适合解决这个问题。 - Edgar Villegas Alvarado
抱歉,我之前犯了错误。现在它可以工作了。再次感谢您的回答,@Edgar Villegas Alvarado。 - rafat
@rafat 欢迎。非常高兴能帮到你 :) 干杯 - Edgar Villegas Alvarado
显示剩余11条评论

2

试试这个:

var str = "&amp;";
var newstring = str.replace(/&amp;/g, "&");

更多信息请参见MDN文档


2
  1. 正则表达式是一个强大的工具。
  2. 这是唯一的方法,可以替换所有的&amp实例,而不仅仅是第一个。
- MultiplyByZer0
什么?str.replace('&', "&"); - bjb568
1
@bjb568 哦,你不了解却批评。你的建议只会替换第一个重合部分。使用str =“A&amp;B&amp;C”时,你的代码会出错。请在批评之前先学习一下。 - Edgar Villegas Alvarado
replace() 方法返回一个新字符串,其中某些或所有匹配的模式都被替换为替换字符串。模式可以是字符串或 RegExp,替换可以是字符串或要为每个匹配调用的函数。第一个没有任何相关内容。 - bjb568
1
@bjb568 哎呀,孩子,好好读文档。或者更好的办法是打开你的控制台并执行这个代码:"A&amp;B&amp;C".replace('&amp;', "&"); 它不会返回正确的结果 A&B&C - Edgar Villegas Alvarado
呃,我认为他们可以更好地解释“某些或全部”的含义。无论如何... str.split('& amp')。join('&') - bjb568

1

如果你不想替换所有这些 HTML 实体,你可以使用这个技巧:

var div = document.createElement('textarea');
div.innerHTML = "bla&amp;bla"
var decoded = div.firstChild.nodeValue;

你转换后的值现在在decoded中。

查看JavaScript中的解码和还原&


-1

一种无需滥用正则表达式的方法:

 function closewin(EmployeeCode) {
      opener.document.Form1.txtEmployeeCode.value = EmployeeCode.split('&amp').join('&');
      this.close();
 }

你需要再次为 &lt 和 &gt 进行转义。不要忘记在实体后面加上可选的分号。 - Rolf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接