我有一个问题,我需要从网址中提取查询字符串参数。参数可以是"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"
此代码会失败,那么我怎样才能测试该单词是否存在而不管大小写?
答案 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()