拆分字符串(Uri的路径)基于“/”

时间:2013-07-01 20:28:51

标签: c# asp.net query-string

想知道是否有人可以指出我正确的方向。我想要实现的是分割一个基于它的字符串,其中包含一个'/'。例如,如果我在代码(c#)中有:www.site.com/course/123456/216,我希望能够在代码中拆分字符串,以便可以将123456分配给变量param1,将216分配给param2 (当然是页面的'友好'名称)。如果我要在字符串上添加第三个'/',我希望它成为param3等等。

理想情况下,我希望能够将此代码放在某个地方,我可以将其包含在我需要它工作的任何用户控件中。

6 个答案:

答案 0 :(得分:22)

Uri.Segments也许你在寻找:

new Uri("http://www.contoso.com/foo/bar/index.htm#search").Segments

[ "/", "foo/", "bar/", "index.html" ]

中的结果

答案 1 :(得分:7)

为什么不使用拆分?

var valueArray = "www.site.com/course/123456/216".Split('/');

数组将整个字符串分解

索引0将是“www.site.com”等等。

答案 2 :(得分:3)

HttpContext.Current.Request.Url.AbsolutePath.Split('/')

答案 3 :(得分:2)

好吧,使假设包含/

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();

答案 4 :(得分:1)

http://msdn.microsoft.com/en-us/library/b873y76a.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1

string QueryString = "1234/567/890"; string[] QueryArray = QueryString.Split('/');

现在QueryArray[0] = 1234QueryArray[1] = 567QueryArray[2] = 890

答案 5 :(得分:1)

url:server/func2/SubFunc2

//获取路径组件。尾随分隔符。返回{“/”,“func2 /”,“sunFunc2”}。 string[] pathsegments = myUri.Segments;