正確なカルチャ、またはカルチャのワイルドカードバージョンに一致する次のコードがあります。
'en-TH'のカルチャを使用すると、返される文字列は' en-**'である必要があります。これは、ワイルドカードと一致しているためです。'en-US'のカルチャは'en-US'を返し、'ar-AK'のカルチャはnullを返します。
ただし、以下のコードでは、「en-US」のカルチャは2つの文字列を返します。
"en-US"
"en-**"
これは、OR演算子がこのコンテキストで「短絡」評価を行っていないためかどうか疑問に思っていますか?IEこのインスタンスで「en-**」が返されることを望まない
string cultureToMatch = "en-TH";
IEnumerable<string> cultures = new string[] { "en-US", "en-**", "fr-**", "en-KH", "ar-AR" };
for (int i = 0; i < cultureToMatch.Length; i++)
{
char searchChar = cultureToMatch[i];
cultures = cultures.Where(w => w.IndexOf(searchChar, i, 1) >= 0 ||
w.IndexOf('*', i, 1) >= 0)
.ToList();
}