我正在编写一个Angular应用程序,它将从USB设备读取磁条卡。当我刷一张测试卡时,我得到一个包含卡号的字符串。例如,;12345?
,其中12345
是卡号。
我的应用使用的数据不包含这些“控制字符”,因此如果字符串以;
开头并以{{1}结尾,我想将它们从搜索字符串中删除}。
当我编写自定义过滤器时:
?
失败是因为我angular.module('app.filters', [])
.filter('stripcardcontrolcharacters', function() {
return function(text) {
if(text.substring(0, 1) === ";" && text.substring(text.length - 1) === "?") {
return text.substring(1, text.length - 1);
}
};
});
在数组上,而不是我搜索过的字符串。
我如何获取我正在过滤的字符串并从中删除字符?
编辑:目前的建议是使用过滤器在控制字符中将数组修改为ADD,以便ng-repeat
可以找到它。我现在可能会继续使用它,但我仍然很想知道你是否可以编写这样的过滤器
答案 0 :(得分:0)
您已通过
将整个数组传递到过滤器ng-repeat="user in users | stripcardcontrolcharacters ...
如果您希望它如何工作,您需要将其视为数组,例如
return function(textArray) {
var invalidChars = /\D/g; // just an example
return textArray.map(text => {
console.log(text);
return text.replace(invalidChars, '');
});
}
答案 1 :(得分:0)
您可能正在将过滤器应用于数组,而不是字符串本身。 看看这个例子:
angular.module('test', [])
.controller('testController', function($scope){
$scope.names = ['John Doe', 'Jane Doe'];
})
// The test filter
.filter('strip', function(){
return function(str) {
return str.substring(1, str.length - 1);
};
});
以下是如何使用它:
<body ng-app="test" ng-controller="testController">
<p ng-repeat="name in names">
{{name | strip }}
</p>
</body>
请注意,我在使用值的过滤器中应用了过滤器,而不是ng-repeat
语句中的过滤器。