基于“Uri”分割字符串(Uri的路径)/&”;
本文关键字:Uri 路径 分割 字符串 基于 | 更新日期: 2023-09-27 18:20:33
不知道是否有人能为我指明正确的方向。我想实现的是根据字符串中的"/"来拆分字符串。例如,如果我在代码(c#)中有:www.site.com/course/123456/216,我希望能够在代码中拆分字符串,以便将123456分配给变量param1,将216分配给param2(course是页面的"友好"名称)。如果我在字符串上添加第三个"/",我希望它变成param3等。
理想情况下,我希望能够将此代码放在某个地方,以便将其包含在我需要它工作的任何用户控件中。
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] = 1234
、QueryArray[1] = 567
、QueryArray[2] = 890
、
url:server/func2/SubFunc2
//获取路径组件。拖尾分离器。返回{"/"、"func2/"answers"sunFunc2"}。string[] pathsegments = myUri.Segments;