Angularjs Filter - 如果出现多次,则删除字符

时间:2014-05-12 12:45:36

标签: javascript angularjs replace slice

在这几个小时没有突破。

我有一个不同时间的时间表

4' 10' 等

但有些人有附属物

5 '+ 1' 8 '+ 2'

我已按如此设置过滤器:

angular.module('myApp').filter('addedTime', function(){
      return function(text) {
       var newText = text.replace(/\+.*$/, '<sup class="additional">$&</sup>');
       console.log(newText);

       return newText;
  };
});'

正如您所看到的,它为添加时间添加了上标。但是我想删除最终的'(单引号),我无法弄清楚如何在不影响正常时间的情况下(4',6'等)。

我想完全拆分它并重新加入它但不确定这是否值得......任何建议都值得赞赏。

编辑: 基本上我试图让它看起来像

<ul>
   <li>5'</li>
   <li>5'<sup>+2</sup></li>
<ul>

(注意+2之后缺少单引号)

1 个答案:

答案 0 :(得分:0)

如何在replace中使用回调?

var newText = text.replace(/\+([0-9]*)\'/g, function(a) {
    return '<sup class="additional">'+a.substring(1, a.length - 1) +'</sup>'
});

您首先发现“添加”时间,因为它们是加号,后跟数字和引号。然后你修改这个组。

给定var text = "5'+1' 8'+2'"; 它返回

5'<sup class="additional">1</sup> 8'<sup class="additional">2</sup>

另一种选择:

var newText = text.replace(/\+(\d)\'/g, '<sup class="additional">$1</sup>')

返回5'<sup class="additional">1</sup> 8'<sup class="additional">2</sup>