检查大写/小写查询字符串的最佳方法

时间:2012-05-03 16:54:22

标签: c# query-string casing

我有一个问题,我需要从网址中提取查询字符串参数。参数可以是"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 个答案:

答案 0 :(得分:14)

使用不区分大小写的键比较器的字典:

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

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

答案 1 :(得分:2)

如果您的QueryString对象不是字典对象,而是诸如NameValueCollection ......

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

答案 2 :(得分:0)

你好它也可以是TeRriTory,在查询字符串中做一个.Tolower()