用2个字符串替换2个字符串的棘手字符串
问题描述:
我想用2个字符串做一些棘手的事情,我不知道如何去做。这是一种向后匹配/替换。我想要替换字符串内部匹配的任何内容。棘手的部分是,我想要替换的字符串部分是另一个字符串的一部分,它基于找到匹配的位置。用2个字符串替换2个字符串的棘手字符串
我有以下变量一起工作:
var keepMe = '#INDEX_NESTED#';
var stringFind = 'test[#INDEX#][nested][#INDEX_NESTED#][dcap]';
var stringReplace = 'test[0][nested][0][dcap]';
的目标是让下面的输出:
test[0][nested][#INDEX_NESTED#][dcap]
此外,假设一切都是动态的,所以没有什么可以硬编码。
有没有办法可以做到这一点?
答
有几种不同的方法来实现这一点。一种方法是使用表达式/(?=\[)/
在每个[
字符处分割两个字符串。这只是一个积极的预测,将匹配每个[
字符后面。然后你可以映射一个新的数组,同时通过索引来比较每个数组中的元素。
var replaceArray = stringReplace.split(/(?=\[)/);
var result = stringFind.split(/(?=\[)/).map(function (value, index) {
return value.indexOf(keepMe) > -1 ? value : replaceArray[index];
}).join('');
完整的示例:
var keepMe = '#INDEX_NESTED#';
var stringFind = 'test[#INDEX#][nested][#INDEX_NESTED#][dcap]';
var stringReplace = 'test[0][nested][0][dcap]';
var replaceArray = stringReplace.split(/(?=\[)/);
var result = stringFind.split(/(?=\[)/).map(function (value, index) {
return value.indexOf(keepMe) > -1 ? value : replaceArray[index];
}).join('');
document.body.textContent = result;
+1
谢谢一堆Josh!这正是我正在寻找的.. – Rick
简单的方法是'(众人面前)(您想配什么)(毕竟)'和你有三件。 – sln
您能否提供一些示例代码如何操作?我仍然没有遵循.. – Rick
是的,我只是想通过使用子位置或类似的东西,有人会有一些聪明的方式来做到这一点。我可以退后一步,看看我能否在核心脚本中做一些不同的事情。谢谢! – Rick