想知道是否有人可以指出我正确的方向。我想要实现的是分割一个基于它的字符串,其中包含一个'/'。例如,如果我在代码(c#)中有:www.site.com/course/123456/216,我希望能够在代码中拆分字符串,以便可以将123456分配给变量param1,将216分配给param2 (当然是页面的'友好'名称)。如果我要在字符串上添加第三个'/',我希望它成为param3等等。
理想情况下,我希望能够将此代码放在某个地方,我可以将其包含在我需要它工作的任何用户控件中。
答案 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] = 1234
,QueryArray[1] = 567
,QueryArray[2] = 890
,
答案 5 :(得分:1)
url:server/func2/SubFunc2
//获取路径组件。尾随分隔符。返回{“/”,“func2 /”,“sunFunc2”}。
string[] pathsegments = myUri.Segments;