所以我在我的 Angular 应用程序中使用filter
。该过滤器接受一个字符串并将其转换为文本。我在此过滤器中有多个规则,因为每个字符串都是不同的。我一步步定义了每条规则,如下所示:
.filter('filter', function () {
return function (item) {
var space = item.replace(/\./g, " ");
var result = space.replace(/([A-Z])/g, " $1");
var ids = result.replace(/Id==/g, " ");
var categories = ids.replace(/Id=in=\(/g, ' ');
var text = categories.replace(/title==/g, 'title: ');
var desc = text.replace(/description==/g, 'description: ');
var dots = desc.replace(/\*/g, ' ');
var parants = dots.replace(/\)/g, ' ');
var commas = parants.replace(/\,/g, '');
var equal = commas.replace(/=/g, '');
var more = equal.replace(/>/g, '');
var line = more.replace(/-/g, '');
var semidots = line.replace(/:/g, '');
var numbers = semidots.replace(/[0-9]/g, '');
var final = numbers.replace(/Z/g, '');
return final.charAt(0).toUpperCase() + final.slice(1)
}
})
这是字符串的示例
title==*test*;description==*some%20desciption*;eventTypeId==10;studyId==99999;priorityId==2;severityId==3;occuredDate%3E=2016-09-01T04:00:00.000Z
最终结果足够好,如下所示:
我确信这段代码可以更简单,但是我不太擅长正则表达式,所以我的问题是,如何使这个正则表达式规则更简单和美观? 我感谢任何帮助。
这很简单plunker以我的例子
最佳答案
除了处理复杂的正则表达式之外,您可以采取的一种方法是管理按顺序应用的突变列表。
function filter(item){
var replacements = [];
replacements.push([/\./g, " "]);
replacements.push([/([A-Z])/g, " $1"]);
replacements.push([/Id==/g, " "]);
replacements.push([/Id=in=\(/g, ' ']);
replacements.push([/title==/g, 'title: ']);
replacements.push([/description==/g, 'description: ']);
replacements.push([/\*/g, ' ']);
replacements.push([/\)/g, ' ']);
replacements.push([/\,/g, '']);
replacements.push([/=/g, '']);
replacements.push([/>/g, '']);
replacements.push([/-/g, '']);
replacements.push([/:/g, '']);
replacements.push([/[0-9]/g, '']);
replacements.push([/Z/g, '']);
for (var x = 0, r = replacements[0];
x < replacements.length;
r = replacements[++x])
item = item.replace(r[0], r[1]);
return item.charAt(0).toUpperCase() + item.slice(1)
}
var items = 'title==*test*;description==*some%20desciption*;eventTypeId==10;studyId==99999;priorityId==2;severityId==3;occuredDate%3E=2016-09-01T04:00:00.000Z'.split(';');
console.log(items.map(filter));
关于javascript - 简化一系列基于正则表达式的字符串替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39419475/