Split string (Pfad der Uri), basierend auf "/"
Frage mich, ob jemand kann mich in die richtige Richtung. Was ich möchte, zu erreichen, ist zum aufteilen einer Zeichenfolge auf der Grundlage es mit einem '/'. Zum Beispiel hätte ich: www.site.com/course/123456/216 im code (c#) ich möchte in der Lage zu split die Zeichenfolge in code, so dass 123456 zugeordnet werden konnten Variablen param1 und 216 zugeordnet werden param2 (natürlich ist das 'freundliche' name der Seite). Wenn ich eine Dritte hinzufügen '/' auf den string möchte ich dies param3, etc, etc.
Im Idealfall würde ich mag in der Lage sein, diesen code irgendwo, ich könnte auch auf welcher Benutzersteuerelemente, ich würde es brauchen, um zu arbeiten.
Request
Objekt. An diesem Punkt haben Sie eine Zeichenfolge, die Sie aufteilen können durch "/" und tun, was auch immer Sie möchten.Diejenigen, die nicht die query strings... das sind Unterverzeichnisse. Außerdem, warum willst du nutzlose Variablen? Arrays verwenden.
Das Beispiel, das Sie Gaben (
www.site.com/course/123456/216
) ist eine URL, kein query-string (www.site.com/course?param1=123456¶m2=216
).Was ist Los mit der split-Funktion?
Sie sind nicht Unterverzeichnisse entweder 🙂 Das ganze ist ein "resource identifier."
InformationsquelleAutor SxChoc | 2013-07-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Uri.Segmente vielleicht, was du suchst:
Ergebnisse in
[ "/", "foo/", "bar/", "index.html" ]
HttpContext.Current.Request.Url.Segments.Select(x=>x.TrimEnd('/')).Skip(2).ToArray()
Hi Leute, nur um Euch wissen zu lassen, dass habe ich schon gezogen auf ein anderes Projekt, so dass ich versuchen werde die Vorschläge im Laufe der nächsten paar Tage. Cheers Leute
fertig sind Sie noch nicht 🙂 2017
Ha, ja alles gut
Der link-redirect-to uri-fragment, nicht Segmente
InformationsquelleAutor Alexei Levenkov
Warum nicht einfach aufteilen?
Array wird die gesamte Zeichenfolge gebrochen
index 0 wäre "www.site.com" und so weiter.
sprechen Sie über den Fall?
Habe es gerade getestet und, zumindest nach der letzten Ausgabe von Javalsu, es ist vollkommen gültig.
Ja, war ich.
Vielen Dank dafür....hilfreich?
InformationsquelleAutor Smeegs
Ok vielen Dank, werde ich ein Lesen, auf! 🙂
Setzen, wird Ihr angezeigter name (natürlich) in element 0, 123456 in element 1, 216 in element 2, und Ihre optionalen parameter in element 3, wenn es vorhanden ist. Ich kann Ihnen zeigen, wie Sie entfernen das erste, aber der einfachste Weg dies zu tun ist etwas wie:
var x=new List<string>(above); x.RemoveAt(0);
odervar x=new Queue<string>(above); x.Dequeue();
Wenn Sie können, verwenden Sie LINQ-dann wäre das folgende noch kürzer:
HttpContext.Current.Request.Url.AbsolutePath.Skip(1).ToArray()
Sorry, habe vergessen das split dort
HttpContext.Current.Request.Url.AbsolutePath.Split('/').Skip(1).ToArray()
. Sie können auch die Segmente, wieHttpContext.Current.Request.Url.Segments.Select(x=>x.TrimEnd('/')).Skip(2).ToArray()
InformationsquelleAutor Robert McKee
Gut, was die Annahme, dass die Werte würde nicht haben
/
in Ihnen:Würden Ihnen den Einstieg erleichtern. Nun, wenn Sie schauen, um Sie zu real-Variablen dann würden Sie brauchen, um einige casting und nutzen Sie die Reflexion, aber Ihre Frage ist nicht in der Nähe klar genug, um jeden wirklichen Annahmen gibt.
BEARBEITEN
Damit dieser code wiederverwendbare ich bauen würde, ein extension-Methode:
weil dann könnte man dies tun:
vielen Dank, korrigiert!
Wow!!! Vielen Dank für alle Antworten! Ich dachte über die Verwendung der split-Funktion verwendet, aber ich war mir nicht sicher, ob es eine andere (bessere) Möglichkeit, das zu erreichen, was ich nach war. Ich werde ein bash und lassen Sie alle wissen, wie ich auf habe. Auch als sub Punkt, was wäre der beste Weg, dieses Stück code wiederverwendbar? Nochmals vielen Dank für Ihre Zeit. Craig
bitte siehe mein edit, wie zu machen es wiederverwendbar.
angesichts url
server/func2/SubFunc2
// Pfad-Komponenten. Nachgestellte Trennzeichen. Returns { "/", "func2/", "sunFunc2" }.string[] pathsegments = myUri.Segments;
InformationsquelleAutor Mike Perrenoud
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('/');
Nun
QueryArray[0] = 1234
,QueryArray[1] = 567
,QueryArray[2] = 890
,(char)47
scheint wie overkill. Warum nicht einfach'/'
?stimmt.. bearbeitet haben
Als Hinweis: die URLs, die ich derzeit habe sind so etwas wie http://www.site.com?crseidcode=123456&crseprofile=123 und ich bin auf der Suche nach einem Weg, um aufzuräumen, diese URL (könnte es umfassen, lädt der Parameter). Die Parameter, die übergeben werden sind immer Ganzzahlen.
Wirklich, das ist das, was query-strings sind für. Könnten Sie trennen, so wie Sie es vorschlagen, aber ich glaube, Sie könnten Gefahr laufen, machen, denkt weniger lesbar/verständlich, für wenig nutzen. Wenn Sie auf der Durchreise sind eine Menge Parameter/Daten, obwohl, sollten Sie erwägen, eine
POST
Anfrage anstatt die Sachen über den querystring. Ich verstehe diesen Umständen nicht möglich, obwohl, abhängig von Ihrer situation.angesichts url
server/func2/SubFunc2
// Pfad-Komponenten. Nachgestellte Trennzeichen. Returns { "/", "func2/", "sunFunc2" }.string[] pathsegments = myUri.Segments;
InformationsquelleAutor Alfie
url:
server/func2/SubFunc2
//Pfad-Komponenten. Nachgestellte Trennzeichen. Returns { "/", "func2/", "sunFunc2" }.
string[] pathsegments = myUri.Segments;
InformationsquelleAutor Max Hodges