Sé libre de divulgar nuestra web y códigos con otro, ayúdanos a hacer crecer nuestra comunidad.
Solución:
El segundo parámetro en Substring
es la longitud de la subcadena, no el índice final.
Probablemente debería incluir el manejo para verificar que realmente comienza con lo que espera, termina con lo que espera y es al menos tan largo como espera. Y luego, si no coincide, puede hacer otra cosa o arrojar un error significativo.
Aquí hay un código de ejemplo que valida que la URL contiene sus cadenas, que también se refactorizó un poco para que sea más fácil cambiar el prefix/sufijo para despojar:
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
Su error son los parámetros de Substring. El primer parámetro debe ser el índice de inicio y el segundo debe ser la longitud o el desplazamiento del índice de inicio.
string newString = url.Substring(18, 7);
Si la longitud de la subcadena puede variar, debe calcular la longitud.
Algo en la dirección de (url.Length - 18) - 4
(o url.Length - 22
)
Al final se verá algo como esto.
string newString = url.Substring(18, url.Length - 22);
Qué tal algo como esto :
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
Puedes añadir valor a nuestro contenido informacional contribuyendo tu veteranía en las crónicas.