好吧,假设这些值不会包含/
在其中:
var splitVals = queryString.Split('/');
var vals = new Dictionary<string, string>();
for (int i = 2; i <= splitVals.Count; i++)
{
vals.Add(string.Format("param{0}", i), vals[i]);
}
那会让你开始。现在,如果您希望将它们设置为真实变量,那么您需要进行一些转换和利用反射,但是您的问题还不够清楚,无法在那里做出任何真实的假设。
编辑
为了使这段代码可重用,我将构建一个扩展方法:
namespace System
{
public static class StringExtensions
{
public static Dictionary<string, string> SplitQueryString(this string queryString)
{
var splitVals = queryString.Split('/');
var vals = new Dictionary<string, string>();
for (int i = 2; i <= splitVals.Count; i++)
{
vals.Add(string.Format("param{0}", i), vals[i]);
}
return vals;
}
}
}
因为那时你可以这样做:
var vals = queryString.SplitQueryString();