我尝试这样做:
<div id="{{mystring.replace(/[\s]/g, \'\')}}"></div>
但它不起作用。 &#34; MyString的&#34;是$scope
上的一个对象,字符串类似于&#34;我的字符串是&#34;我希望从视图中删除空格。
答案 0 :(得分:48)
只需创建专用过滤器:
angular.module('filters.stringUtils', [])
.filter('removeSpaces', [function() {
return function(string) {
if (!angular.isString(string)) {
return string;
}
return string.replace(/[\s]/g, '');
};
}])
并称之为:
<div id="{{'hi there'| removeSpaces}}"></div>
答案 1 :(得分:26)
如果您只需要在一两个地方使用它,则拆分和加入可能更容易:
$scope.boundString = 'this is a string with spaces'
您可以在模板中执行此操作:
<span>my string is: {{ boundString.split(' ').join('') }}</span>
你会得到:
my string is: thisisastringwithoutspaces
另一种提到的方法是正则表达式版本(&#39; g&#39;用于全局):
<span>my string is: {{ boundString.replace(/ /g, '') }}</span>
我想重点是你可以对表达式中的字符串做任何你想做的事情。这些示例是关于Angular脏检查的不良约定。在Angular中,绑定函数(string.replace,string.split)在绑定到模板表达式时以不同的方式与指定值(字符串,布尔值)进行求值。必须在Angular知道是否更新DOM之前评估绑定函数的结果。这可能比大型应用程序昂贵。我建议使用另一个变量来跟踪不间隔的值:
$scope.noSpaces = $scope.boundString.replace(/ /g, '');
HTML:
<span>{{ noSpaces }}</span>
这样,当触发摘要循环时,Angular将检查noSpaces是否已更改,而不是评估boundString.replace(/ / g,&#39;&#39;)。
如果你正在重复怎么办?好问题。
for (var idx = 0, idx < $scope.boundIterable.length, i++) {
$scope.boundIterable[i].noSpaces = $scope.boundIterable[i].boundString.replace(/ /g, '');
}
HTML:
<ul ng-repeat="iterable in boundIterable">
<li>{{ iterable.noSpaces }}</li>
</ul>
答案 2 :(得分:7)
提到的指令效果很好。但是,如果要删除较小文本的空格,可以使用
.split(" ").join("")
这取代了与.replace(" ","")
不同的完整空格,而ng-repeat
仅取代了第一个空格。
答案 3 :(得分:3)
您可以使用replace()
:
.replace(" ","")
答案 4 :(得分:2)
{{ string.trim() }}
怎么样?
答案 5 :(得分:1)
您可以使用replace()
:
{{mystring.replace(" ","")}}
我希望如此。
答案 6 :(得分:0)
removeSpaces() {
originalText ="hi! here i'm";
removedSpacesText = originalText.split(" ").join("");
}