Ответ 1
Uri.Segments может быть, то, что вы ищете:
new Uri("http://www.contoso.com/foo/bar/index.htm#search").Segments
Результаты в [ "/", "foo/", "bar/", "index.html" ]
Интересно, может ли кто-нибудь указать мне в правильном направлении. То, что я хотел бы достичь, состоит в том, чтобы разбить строку, основываясь на том, что в ней есть "/". Например, если бы у меня было: www.site.com/course/123456/216 в коде (С#), я хотел бы иметь возможность разделить строку в коде, чтобы 123456 можно было присвоить переменной param1 и 216 назначить param2 (курс - это "дружественное" название страницы). Если бы мне пришлось добавить третью строку '/' в строку, мне бы хотелось, чтобы это стало param3 и т.д. И т.д.
В идеале я хотел бы иметь возможность помещать этот код где-нибудь, чтобы я мог включить его в зависимости от того, какие пользовательские элементы управления ему понадобятся.
Uri.Segments может быть, то, что вы ищете:
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('/');
В массиве будет разбита вся строка
index 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-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
,
url: server/func2/SubFunc2
//Получить компоненты пути. Сцепление разделителей. Возвращает { "/", "func2/", "sunFunc2" }.
string[] pathsegments = myUri.Segments;