基于“Uri”分割字符串(Uri的路径)/&”;

本文关键字:Uri 路径 分割 字符串 基于 | 更新日期: 2023-09-27 18:20:33

不知道是否有人能为我指明正确的方向。我想实现的是根据字符串中的"/"来拆分字符串。例如,如果我在代码(c#)中有:www.site.com/course/123456/216,我希望能够在代码中拆分字符串,以便将123456分配给变量param1,将216分配给param2(course是页面的"友好"名称)。如果我在字符串上添加第三个"/",我希望它变成param3等。

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

基于“Uri”分割字符串(Uri的路径)/&”;

Uri。分段可能是您想要的:

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

[ "/", "foo/", "bar/", "index.html" ] 中的结果

为什么不直接使用split?

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

阵列将具有整个字符串的分解

索引0将是"www.site.com",依此类推。

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

好吧,让假设这些值中不会有/

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

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

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

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

url:server/func2/SubFunc2

//获取路径组件。拖尾分离器。返回{"/"、"func2/"answers"sunFunc2"}。string[] pathsegments = myUri.Segments;