Utilice la clase Uri
para analizar el URI: puede acceder a todos los segmentos utilizando la propiedad Segments
y reconstruir el URI sin el último segmento.
var uri = new Uri(myString);
var noLastSegment = string.Format("{0}://{1}", uri.Scheme, uri.Authority);
for(int i = 0; i < uri.Segments.Length - 1; i++)
{
noLastSegment += uri.Segments[i];
}
noLastSegment = noLastSegment.Trim("/".ToCharArray()); // remove trailing `/`
Como una alternativa para conseguir el nombre del esquema y anfitrión, como se sugiere en Dour Arco Alto en su comentario:
var noLastSegment = uri.GetComponents(UriComponents.SchemeAndServer,
UriFormat.SafeUnescaped);
¿Desea utilizar linq? ¿por qué? – NicoSantangelo
¿Qué desea que suceda si el URI contiene metacaracteres, cadenas de consulta o parámetros; p.ej. 'http: //www.example.com/admin/users.aspx/deleteUser? alpha = para% 27? beta =% 5F% 39'? –
gran pregunta, idealmente las mantendría, solo eliminando el último segmento de la ruta. – bflemi3