Лучший способ проверить строки запроса в верхнем / нижнем регистре
У меня проблема, когда мне нужно извлечь параметр строки запроса из 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()