次のような文字列のリストが与えられた場合:
a/b/*/lol/cats
*/*
foo/bar/**
foo/bar/*/C/**
それらを特異性でどのように分類しますか?
私の素朴なアプローチ(私のテストケースの大部分で機能します)は次のとおりです。
var sorted = wildCards
.OrderBy(c => c.HasCatchAll)
.ThenBy(c => c.NumWildCards)
.ThenByDescending(c => c.Pattern.Length);
上記のコードのHasCatchAll
プロパティは、文字列の末尾に ** があることを示しています (** の唯一の有効な場所)。
上記の理由は、a を含む**
ものはワイルド カードを含まないものよりも具体的でなく、ワイルド カードが多いほど具体的でなくなるということです。つまり、上記は次の場合に失敗します。
*/hi/*/*
*/*/hi/*
どんな助けでも大歓迎です。