javascript - 用javascript中的重复字符替换函数返回字符串
问题描述
考虑以下功能
function myFunction() {
var html = "CR_557!#$&'()*+,-./:;<=>?@[]^_`{|}";
var data = html.substring(0, 14);
var newData = '<span style="background-color:#F2E9B7">' + data + '</span>';
return html.replace(data, newData);
}
console.log(myFunction());
最后 var 的预期内容html
应该是:
"<span style=\"background-color:#F2E9B7\">CR_557!#$&</span>'()*+,-./:;<=>?@[]^_`{|}"
但由于某种原因,我得到了这个:
"<span style=\"background-color:#F2E9B7\">CR_557!#CR_557!#$&amp;</span>'()*+,-./:;<=>?@[]^_`{|}"
字符 CR_557!# 由于某种原因被重复,不知道为什么。
解决方案
正如Andreas 在评论中提到的,$&
在替换参数中具有特殊含义String.prototype.replace
。
要解决此问题,请使用afunction
作为替换参数:
function myFunction() {
var html = "CR_557!#$&'()*+,-./:;<=>?@[]^_`{|}";
var data = html.substring(0, 14);
var newData = '<span style="background-color:#F2E9B7">' + data + '</span>';
return html.replace(data, function () { return newData });
}
console.log(myFunction());
推荐阅读
- java - 如何拦截 Axis/Apache SOAP 请求,我可以使用 Log4J 吗?
- swift - 如何在每个数组元素数组中附加字符串
- openbravo - Openbravo 数据包为空
- spring-boot - 使用 Feign 客户端调用 3rd 方 API 抛出无法从 START_OBJECT 令牌中反序列化 `java.util.ArrayList` 的实例
- r - 由于本地 rstudio 和 r ui 中的特定日语字符而无法绘制绘图,但使用 plotly 在 rstudio.cloud 中没有问题
- c++ - 它如何返回布尔结果?
- python - 查找形状文件中的所有相交多边形
- python - 无法在不返回 ValueError 的情况下 fit() Scikit-Learn 管道
- python-3.x - 连续硬币计数
- dafny - 如何使用“存在”量词?