5

这可能是一个非常简单的问题,但到目前为止,谷歌让我失望了,并一直将我指向 python 解决方案。

我有一个网页,应用程序/用户可以提供querystringparameters。要检索查询字符串参数,我使用以下代码:

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

要检查指定键的存在,我使用以下代码:

if (!String.IsNullOrEmpty(qStrings["PARAM1"]))
{}

了解我们的用户,我希望他们提供如下参数键:“Param1”、“param1”、“pArAm1” 如何在不迭代每个键值对的情况下简单地将字典中的每个键转换为大写?

或者我怎样才能改变它qStrings["PARAM1"]所以它忽略了这个案例?

4

4 回答 4

8

您可以使用StringComparer忽略大小写来查找键:

var qStrings = new Dictionary<string, string>(
    HtmlPage.Document.QueryString,
    StringComparer.OrdinalIgnoreCase)
于 2014-09-11T06:57:47.587 回答
2

最简单的方法

qStrings = qStrings .ToDictionary(k => k.Key.ToUpper(), k => k.Value.ToUpper());
于 2020-02-26T14:16:10.563 回答
1

也许你可以这样做:

Dictionary<string, string> qStrings = new Dictionary<string, string>();
foreach (var a in qStrings.Keys)
{
    switch (a.ToUpper())
    {
        case "PARAM1":
            break;
    }
}
于 2014-09-11T07:13:02.147 回答
-1

没有迭代是不可能的。无论您使用哪种方法,都会有某种迭代。这是您需要将数据的插入限制为单个统一的大小写,而不是允许用户输入各种大小写。

以您的示例: "Param1", "param1", "pArAm1",将为其中的每一个创建一个密钥,因为它们被视为单独的实体。处理该问题的最佳方法是在插入时强制使用大小写,而不是在查询值时强制使用大小写。

例如:

void AddToDictionary(string key, string value)
{
   qStrings[key.ToUpper()] = value;
}
于 2014-09-11T07:05:33.920 回答