我需要一个过滤器来将所有下划线替换为字符串中的空格
答案 0 :(得分:36)
string.replace
不仅接受字符串作为第一个参数,而且还接受正则表达式作为第一个参数。因此,将_
放在正则表达式分隔符/
中,然后添加g
修饰符。 g
称为全局修饰符,它将在全局范围内进行替换。
App.filter('underscoreless', function () {
return function (input) {
return input.replace(/_/g, ' ');
};
});
答案 1 :(得分:18)
这是一个通用的替换过滤器替代
App.filter('strReplace', function () {
return function (input, from, to) {
input = input || '';
from = from || '';
to = to || '';
return input.replace(new RegExp(from, 'g'), to);
};
});
在HTML中使用如下:
{{ addText | strReplace:'_':' ' }}
次要注意:由于Angular内容安全规则,to
参数中的任何HTML标记都会导致表达式失败。
答案 2 :(得分:1)
在某些情况下,您可以使用split()
函数。
.replace函数不符合regexp语法(即.replace(/,/g,'\n')
语法)
完整语法:
{{myVar.toString().split(',').join('\n')}}
.toString()
函数用于在打字稿中未将myVar键入为String的情况。
答案 3 :(得分:0)
这是我在angularjs 1.4.7中使用的
<li ng-show="filter.degree.length">
<label>Search by Degree :- </label> {{
filter.degree.toString().split('|').join(', ')
}}
</li>
答案 4 :(得分:-1)
有一个更简单的方法:
您可以在没有定义过滤器的情况下内联替换它。就是这样。
此示例仅用于视图中的替换。
{{ value.replace(/_/g, ' ') }}
我希望它可以帮助进行简单的更改,如果你想在更多地方进行更改,请使用过滤器。