私は角度アプリで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
最終的な結果は十分に良好であり、次のようになります。
私はこのコードはよりシンプルにすることができると確信していますが、私は正規表現ではあまりよくないので、私の質問は、この正規表現のルールをよりシンプルで美しくする方法ですか? 私は助けていただきありがとうございます。
これは、それはまだつもりだ私の例
あなたは '.split()'文字列は、あなたが取得し、独自の変数にそれを破るしていることができます。あなたは正規表現の層をあまりにも多く使用しています。 –
すべての中間変数は必要ありません。すべてのステートメントを1つの行にまとめるだけです(ただし、読みやすくするためにコードに改行を挿入してください)。 – 4castle
シンプルで美しいが必要なら、正規表現はあなたが向ける場所ではありません。 –