7

我有一个问题,我需要从 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"了此代码将失败,那么我如何才能测试该单词是否存在而不管大小写?

4

3 回答 3

14

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

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

if (queryParams.ContainsKey("territory")) {
    // Covers "territory", "Territory", "teRRitory", etc.
}
于 2012-05-03T16:58:31.893 回答
2

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

IDictionary<string, string> queryString = QueryString.AllKeys.ToDictionary(k => k.ToLowerInvariant(), k => QueryString[k]);
于 2014-01-07T19:03:32.940 回答
0

您好,它也可以是 TeRriTory,在查询字符串中执行 .Tolower()

于 2012-05-03T16:59:44.930 回答