如果连续出现两次以上,请用新词替换该事件 angularjs
If an occurance is more than two times contiunously replace that occurance with a new word angularjs
我有一条来自后端的文本,其中有多个中断,包括 2 次中断、4 次中断或 6 次中断,我想用 2 次中断替换中断。例如:如果在一个字符串中我有四个连续的中断,那么我只想用 2 个中断替换这些中断。
我尝试了以下代码,但没有成功:
TMSApp.filter('newlinesmatch', function () {
return function(text) {
var str = '<br>';
var count = (text.match(/<br>/g) || []).length;
if(count > 2){
return String(text).replace(/<br>/g,'<br><br>');
}
}
});
有人可以帮忙吗?
您可以用 <br><br>
替换任意数量的连续出现的 <br>
,如下所示:
TMSApp.filter('newlinesmatch', function () {
return function(text) {
return text.replace(/(<br>)+/g, '<br><br>');
}
});
注意:我知道您提到过您总是会连续获得 2、4 或 6 次休息。但是,值得注意的是,上面的解决方案将用 <br><br>
.
替换任意数量的连续出现(甚至是单个出现)
编辑:
根据下面的评论和一个真实的例子,我做了下面的更改。请注意,原始答案适用于最初描述的场景,其中需要替换 CONSECUTIVE <br>
s。 REAL 示例没有连续的 <br>
,因为每对之间有一个 space。以下代码适用于这种情况:
.filter('newlinesmatch', function () {
return function(text) {
return text.replace(/(<br>\s*)+/g, '<br><br>');
}
});
这里是一个可用的 plunker,其中提供了示例数据:
我有一条来自后端的文本,其中有多个中断,包括 2 次中断、4 次中断或 6 次中断,我想用 2 次中断替换中断。例如:如果在一个字符串中我有四个连续的中断,那么我只想用 2 个中断替换这些中断。
我尝试了以下代码,但没有成功:
TMSApp.filter('newlinesmatch', function () {
return function(text) {
var str = '<br>';
var count = (text.match(/<br>/g) || []).length;
if(count > 2){
return String(text).replace(/<br>/g,'<br><br>');
}
}
});
有人可以帮忙吗?
您可以用 <br><br>
替换任意数量的连续出现的 <br>
,如下所示:
TMSApp.filter('newlinesmatch', function () {
return function(text) {
return text.replace(/(<br>)+/g, '<br><br>');
}
});
注意:我知道您提到过您总是会连续获得 2、4 或 6 次休息。但是,值得注意的是,上面的解决方案将用 <br><br>
.
编辑:
根据下面的评论和一个真实的例子,我做了下面的更改。请注意,原始答案适用于最初描述的场景,其中需要替换 CONSECUTIVE <br>
s。 REAL 示例没有连续的 <br>
,因为每对之间有一个 space。以下代码适用于这种情况:
.filter('newlinesmatch', function () {
return function(text) {
return text.replace(/(<br>\s*)+/g, '<br><br>');
}
});
这里是一个可用的 plunker,其中提供了示例数据: