【发布时间】:2015-11-03 12:46:17
【问题描述】:
我需要一个过滤器来将字符串中的所有下划线替换为空格
【问题讨论】:
标签: javascript regex angularjs angularjs-filter
我需要一个过滤器来将字符串中的所有下划线替换为空格
【问题讨论】:
标签: javascript regex angularjs angularjs-filter
string.replace 不仅接受字符串作为第一个参数,还接受正则表达式作为第一个参数。因此,将_ 放在正则表达式分隔符/ 中,并同时添加g 修饰符。 g 调用了全局修饰符,它将全局替换。
App.filter('underscoreless', function () {
return function (input) {
return input.replace(/_/g, ' ');
};
});
【讨论】:
input 不是字符串,或者input 为空或未定义,则此操作失败。
这是一个通用的替换过滤器替代方案
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:'_':' ' }}
小提示:to 参数中的任何 HTML 标记都将导致表达式因 Angular 内容安全规则而失败。
【讨论】:
App 这里代表您从创建 Angular 应用程序中返回的对象,如下所示:var App = angular.module('myApp', ['some-dependency', 'some-other-dependency']);
有一个更简单的方法:
您可以在没有定义过滤器的情况下内联替换它。就是这样。
这个例子只是在视图中替换。
{{ value.replace(/_/g, ' ') }}
我希望它对简单的更改有所帮助,如果您想在更多地方进行更改,请使用过滤器。
【讨论】:
syntax Error: Token '/' not a primary expression。
这个简单的功能就可以做到:
public getCleanedString(cadena) {
cadena = cadena.replace(/_/g, ' ');
return cadena;
}
【讨论】:
在某些情况下,您可以使用split() 函数。
.replace 函数不符合正则表达式语法(即.replace(/,/g,'\n') 语法)
完整语法:{{myVar.toString().split(',').join('\n')}}
.toString()函数是在 myVar 未在 typescript 中键入为 String 的情况下使用的。
【讨论】:
这是我在 angularjs 1.4.7 中使用的
<li ng-show="filter.degree.length">
<label>Search by Degree :- </label> {{
filter.degree.toString().split('|').join(', ')
}}
</li>
【讨论】: