Ich fühle mich irgendwie dumm, dies zu posten, wenn dies einfach erscheint und es Unmengen von Fragen zu Zeichenfolgen / Zeichen / Regex gibt, aber ich konnte nicht genau das finden, was ich brauchte (außer in einer anderen Sprache: Entfernen Sie den gesamten Text nach einem bestimmten Punkt ).
Ich habe folgenden Code:
[Test]
public void stringManipulation()
{
String filename = "testpage.aspx";
String currentFullUrl = "http://localhost:2000/somefolder/myrep/test.aspx?q=qvalue";
String fullUrlWithoutQueryString = currentFullUrl.Replace("?.*", "");
String urlWithoutPageName = fullUrlWithoutQueryString.Remove(fullUrlWithoutQueryString.Length - filename.Length);
String expected = "http://localhost:2000/somefolder/myrep/";
String actual = urlWithoutPageName;
Assert.AreEqual(expected, actual);
}
Ich habe die Lösung in der obigen Frage versucht (in der Hoffnung, dass die Syntax dieselbe ist!), Aber nein. Ich möchte zuerst den queryString entfernen, der eine beliebige variable Länge haben kann, und dann den Seitennamen entfernen, der wiederum eine beliebige Länge haben kann.
Wie kann ich die Abfragezeichenfolge aus der vollständigen URL entfernen, damit dieser Test erfolgreich ist?
/
?Uri uri
und dann darauf zugreifenuri.Segments
. Das gibt ein Array zurück und "somepage.aspx" ist das letzte Element.Alles vor dem ersten entfernen
/
Alles nach dem ersten entfernen
/
Alles vor dem letzten entfernen
/
Alles nach dem letzten entfernen
/
Eine noch einfachere Lösung zum Entfernen von Zeichen nach einem angegebenen Zeichen ist die Verwendung der String.Remove () -Methode wie folgt:
Alles nach dem ersten entfernen
/
Alles nach dem letzten entfernen
/
quelle
Hier ist eine weitere einfache Lösung. Der folgende Code gibt alles vor dem '|' zurück. Charakter:
Tatsächlich könnten Sie so viele Trennzeichen haben, wie Sie möchten, aber wenn Sie nur ein Trennzeichen haben, erhalten Sie nach dem '|' Folgendes:
(Alles, was ich im zweiten Code geändert habe, war der Index des Arrays.)
quelle
Die Uri-Klasse ist im Allgemeinen die beste Wahl, um Urls zu manipulieren.
quelle
Verwenden Sie unten, um alles vor einem bestimmten Zeichen zu entfernen.
Dies bedeutet, dass alles vor dem $ char genommen und entfernt wird. Wenn Sie nun die Elemente nach einem Charakter entfernen möchten, ändern Sie einfach die +1 in -1 und schon sind Sie fertig!
Aber für eine URL würde ich die eingebaute .NET-Klasse verwenden, um das zu übernehmen.
quelle
Request.QueryString
hilft Ihnen dabei, dieparameters
und Werte in dieURL
Beispiel
Daher sollte die Variable für den Benutzernamen gleich dave sein
Grüße
quelle
Ich zweiter Hightechrider: Es gibt bereits eine spezielle URL-Klasse für Sie.
Ich muss jedoch auch darauf hinweisen, dass das PHP replaceAll reguläre Ausdrücke für das Suchmuster verwendet, was Sie auch in .NET tun können - sehen Sie sich die RegEx-Klasse an.
quelle
Sie können die in .NET integrierte Methode verwenden, um die zu entfernen
QueryString
. dhRequest.QueryString.Remove["whatever"];
Versuchen Sie dies ... Ich hoffe, das wird helfen.
quelle