Saltar al contenido

C# – Subcadena: el índice y la longitud deben hacer referencia a una ubicación dentro de la string

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *