如果一个词连续出现两次以上,就用一个新词angularjs替换它



我有一个文本来自后台有多个休息来2个休息,4个休息或6个休息,我想用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>替换任意数量的连续出现(甚至是单个)。

编辑:

根据下面的评论和一个真实的例子,我在下面做了改变。注意,原始答案适用于最初描述的场景,其中需要替换连续的<br>。REAL示例没有连续的<br>,因为每对之间有一个空格。下面的代码将适用于这种情况:

.filter('newlinesmatch', function () {
    return function(text) {
      return text.replace(/(<br>s*)+/g, '<br><br>');
    }
});

下面是一个工作柱塞和提供的样本数据:

http://plnkr.co/edit/ztcsbJoJ51ZF8FcJylbC?p =预览

最新更新