将递增数字添加到重复字符串的替换方法
Replace method that adds an incrementing number to a repeated string
我有一个包含一堆 <a id="r"></a>
标签的文档,我想为每个标签添加一个递增的数字,所以,<a id="r1"></a>
... <a id="r2"></a>
,等等。循环我目前拥有的,似乎不起作用。
function(doc) {
for (var i = 1; i <= doc.length; i++) {
var number = 1;
return doc.replace(/<a id=""><\/a>/, '<a id="page' + number + '"></a>');
number += 1
};},
如果在循环中 return
,它不会重复多次。
您正在循环内设置 var number = 1;
。你已经有一个带 i
的整数,所以使用 + i +
,你将在循环内返回。
我认为你不想循环。尝试使用替换模式中的递增数字执行全局正则表达式:
function(doc) {
var number = 1;
return doc.replace(/(<a\s+[^>]*id="r)("[^>]*>[^<]*<\/a>)/gi, function(m, a, b) {
return a + (number++) + b;
});
};
这会查找任何带有 id="r"
的 <A>
标签,保持它们的内容和属性相同,但将 r
更改为 r1
、r2
, r#
。这是你想要的吗?
尝试在循环外声明 number
。
function(doc) {
var number=1;
for (var i=1;i<=doc.length;i++) {
return doc.replace(/<a id=""><\/a>/,'<a id=\"page'+number+'\"></a>');
number+=1;
}
},
我有一个包含一堆 <a id="r"></a>
标签的文档,我想为每个标签添加一个递增的数字,所以,<a id="r1"></a>
... <a id="r2"></a>
,等等。循环我目前拥有的,似乎不起作用。
function(doc) {
for (var i = 1; i <= doc.length; i++) {
var number = 1;
return doc.replace(/<a id=""><\/a>/, '<a id="page' + number + '"></a>');
number += 1
};},
如果在循环中 return
,它不会重复多次。
您正在循环内设置 var number = 1;
。你已经有一个带 i
的整数,所以使用 + i +
,你将在循环内返回。
我认为你不想循环。尝试使用替换模式中的递增数字执行全局正则表达式:
function(doc) {
var number = 1;
return doc.replace(/(<a\s+[^>]*id="r)("[^>]*>[^<]*<\/a>)/gi, function(m, a, b) {
return a + (number++) + b;
});
};
这会查找任何带有 id="r"
的 <A>
标签,保持它们的内容和属性相同,但将 r
更改为 r1
、r2
, r#
。这是你想要的吗?
尝试在循环外声明 number
。
function(doc) {
var number=1;
for (var i=1;i<=doc.length;i++) {
return doc.replace(/<a id=""><\/a>/,'<a id=\"page'+number+'\"></a>');
number+=1;
}
},