7

URL からクエリ文字列パラメーターを抽出する必要があるという問題があります。パラメーターは、その単語の大文字/小文字のバリエーションのいずれか、またはその他のバリエーションである"Territory"可能性があります。"territory"以下は最初の 2 つのケースで機能しますが、もっと良い方法があるのだろうか?

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 に答える