我有以下代码与确切的文化或文化的通配符版本匹配。
使用“en-TH”的文化,返回的字符串应该是“en-**”,因为它已由通配符匹配。“en-US”文化将返回“en-US”,“ar-AK”文化将返回 null。
但是,使用下面的代码,“en-US”的文化会返回两个字符串:
"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();
}