Ich habe einen String, der aussieht
string url = "www.example.com/aaa/bbb.jpg";
"www.example.com/" ist 18 fest in der Länge. Ich möchte den Teil "aaa/bbb" aus dieser Zeichenfolge erhalten (die tatsächliche URL ist jedoch weder Beispiel noch aaa/bbb, die Länge kann variieren).
also hier ist was ich getan habe:
string newString = url.Substring(18, url.Length - 4);
Dann bekam ich die Ausnahme: Index und Länge müssen sich auf einen Ort innerhalb des Strings beziehen. Was ist falsch an meinem Code und wie kann er behoben werden? Danke im Voraus.
Der zweite Parameter in Substring
ist die Länge der Teilzeichenfolge, nicht der Endindex.
Sie sollten wahrscheinlich die Handhabung einschließen, um zu überprüfen, ob sie tatsächlich mit dem beginnt, was Sie erwarten, enden mit dem, was Sie erwarten, und mindestens so lang ist, wie Sie es erwarten. Und wenn es nicht passt, können Sie entweder etwas anderes tun oder einen sinnvollen Fehler auslösen.
Hier ist ein Beispielcode, der bestätigt, dass die URL Ihre Zeichenfolgen enthält. Dieser Code wurde ebenfalls ein wenig umgestaltet, um das Abändern des Präfixes/Suffixes zu vereinfachen:
var prefix = "www.example.com/";
var suffix = ".jpg";
string url = "www.example.com/aaa/bbb.jpg";
if (url.StartsWith(prefix) && url.EndsWith(suffix) && url.Length >= (prefix.Length + suffix.Length))
{
string newString = url.Substring(prefix.Length, url.Length - prefix.Length - suffix.Length);
Console.WriteLine(newString);
}
else
//handle invalid state
Ihr Fehler sind die Parameter für den Teilstring. Der erste Parameter sollte der Startindex sein und der zweite sollte die Länge oder den Abstand vom Startindex sein.
string newString = url.Substring(18, 7);
Wenn die Länge der Teilzeichenfolge variieren kann, müssen Sie die Länge berechnen.
Etwas in Richtung (url.Length - 18) - 4
(oder url.Length - 22
)
Am Ende wird es so aussehen
string newString = url.Substring(18, url.Length - 22);
Wie wäre es mit so etwas:
string url = "http://www.example.com/aaa/bbb.jpg";
Uri uri = new Uri(url);
string path_Query = uri.PathAndQuery;
string extension = Path.GetExtension(path_Query);
path_Query = path_Query.Replace(extension, string.Empty);// This will remove extension
Sie müssen die Position des ersten /
finden und dann den gewünschten Anteil berechnen:
string url = "www.example.com/aaa/bbb.jpg";
int Idx = url.IndexOf("/");
string yourValue = url.Substring(Idx + 1, url.Length - Idx - 4);
Versuche dies:
int positionOfJPG=url.IndexOf(".jpg");
string newString = url.Substring(18, url.Length - positionOfJPG);
string newString = url.Substring(18, (url.LastIndexOf(".") - 18))
Sie können die Polsterung richtig verwenden.
string url = "www.example.com/aaa/bbb.jpg";
string newString=url.PadRight(4);
string newString = (url.Substring(18, url.Length - 4)).Trim();
Viel Spaß beim Codieren!
Hier ist ein weiterer Vorschlag. Wenn Sie http: // Ihrer URL-Zeichenfolge voranstellen können, können Sie dies tun
string path = "http://www.example.com/aaa/bbb.jpg";
Uri uri = new Uri(path);
string expectedString =
uri.PathAndQuery.Remove(uri.PathAndQuery.LastIndexOf("."));