Лучший способ проверить строки запроса в верхнем / нижнем регистре

У меня проблема, когда мне нужно извлечь параметр строки запроса из URL. Параметр может быть либо "Territory" или же "territory" или другие варианты этого слова в верхнем / нижнем регистре. Хотя для первых двух случаев работает следующее, мне интересно, есть ли лучший способ?

IDictionary<string, string> queryString = HtmlPage.Document.QueryString;

if (queryString.ContainsKey("territory"))
{
    ish.SetDefaultRegion(int.Parse(queryString["territory"]));
    // do something (the same something as below)
}
else if (queryString.ContainsKey("Territory"))
{
    ish.SetDefaultRegion(int.Parse(queryString["Territory"]));
    // do something (the same something as above)
}

Я бы предпочел вставить строку запроса в словарь, игнорируя регистр (т. Е. Если пользователь случайно набрал "TERRITORY" этот код потерпит неудачу, так как я могу просто проверить, что слово существует независимо от регистра?

3 ответа

Решение

Используйте словарь с учетом регистра без учета регистра ключей:

var queryParams = new Dictionary<string, string>(
    HtmlPage.Document.QueryString,
    StringComparer.InvariantCultureIgnoreCase
);

if (queryParams.ContainsKey("territory")) {
    // Covers "territory", "Territory", "teRRitory", etc.
}

Если ваш объект QueryString не является объектом словаря, но вместо этого является чем-то вроде NameValueCollection...

IDictionary<string, string> queryString = QueryString.AllKeys.ToDictionary(k => k.ToLowerInvariant(), k => QueryString[k]);

Здравствуйте, это может быть также TeRriTory, в строке запроса сделать.Tolower()

Другие вопросы по тегам