如何解决无法替换基于Java数组中的字符串部分
| 我有两个数组,一个数组用于一个case,另一个数组用于b case。我想要由一个或多个不同的arr1项目组成的bodyTags字符串替换为具有相同索引的arr2项目。 下面的代码不起作用。如果您可以解决它或建议我如何使用jQuery达到预期的效果,那么这将对我有很大帮助。var arr1 = [\"1a\",\"2a\",\"3a\",\"4a\",\"5a\",\"a6\",\"7a\",\"8a\",\"9a\"];
var arr2 = [\"1b\",\"2b\",\"3b\",\"4b\",\"5b\",\"6b\",\"7b\",\"8b\",\"9b\"];
var bodyTags = \'something a1 got funcky a6\';
for (var i = 0; i < arr1.length; i++) {
bodyTags = bodyTags.replace(/arr1[i]/gi,arr2[i]);
}
解决方法
在正则表达式中,
arr1[i]
将按字面意义使用。如果要使用动态表达式,则必须使用RegExp
:
bodyTags.replace(new RegExp(arr1[i],\'gi\'),arr2[i]);
, 可能是这个吗?
for (var i = 0; i < arr1.length; i++) {
myregexp = new RegExp(arr1[i],\"gi\");
bodyTags = bodyTags.replace(myregexp,arr2[i]);
}
, 我相信这就是你所需要的
var arr1 = [\"1a\",\"2a\",\"3a\",\"4a\",\"5a\",\"a6\",\"7a\",\"8a\",\"9a\"];
var arr2 = [\"1b\",\"2b\",\"3b\",\"4b\",\"5b\",\"6b\",\"7b\",\"8b\",\"9b\"];
var bodyTags = \'something 1a got funcky a6\';
for (var i = 0; i < arr1.length; i++) {
var re = new RegExp(arr1[i],\"gi\");
bodyTags = bodyTags.replace(re,arr2[i]);
}
2件事:
bodyTags包含不在第一个数组中的a1
问题在于/ arr1 [1] /不在寻找arr [1]的值并将其连接到regexp上,这是唯一的硬编码arr1 [i],这意味着regexp将匹配\'arr1 \'这样的字符串
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。