【发布时间】:2019-08-15 02:53:31
【问题描述】:
我有以下代码,可以很好地拆分字符串并将键值对保存到字典中。有没有更优雅、更有效的方法来做同样的事情?谢谢!
private void SplitString()
{
string testConfig = "application?test1=value1&test2=value2&test3=value3";
var dict = new Dictionary<string, string>();
if (!string.IsNullOrEmpty(testConfig) && testConfig.Contains("?"))
{
string parameters = testConfig.Substring(testConfig.LastIndexOf("?") + 1);
string[] parameterArray = parameters.Split(new char[] { '&' }, StringSplitOptions.RemoveEmptyEntries);
if (parameterArray.Length > 0)
{
foreach (var item in parameterArray)
{
string[] param = item.Split(new char[] { '=' });
if (param.Length == 2)
{
switch (param[0].ToUpper())
{
case "TEST1":
dict.Add("TEST1", param[1]);
break;
case "TEST2":
dict.Add("TEST2", param[1]);
break;
case "TEST3":
dict.Add("TEST3", param[1]);
break;
}
}
}
}
}
}
【问题讨论】:
-
是的。
var dict = HttpUtility.ParseQueryString(testConfig). -
如果您正在解析 URL 或 URL 编码的标签/值对列表,我强烈建议您使用经过验证的工具。这个问题比看起来更难。请记住,需要担心特殊字符、分隔符和转义序列,甚至是潜在的注入威胁。