Tengo una NSString con el valor departes de un NSURL en Objective-C
http://digg.com/news/business/24hr
¿Cómo puedo conseguir todo antes de que el nivel 3?
http://digg.com/news/
Tengo una NSString con el valor departes de un NSURL en Objective-C
http://digg.com/news/business/24hr
¿Cómo puedo conseguir todo antes de que el nivel 3?
http://digg.com/news/
Este no es exactamente el tercer nivel, te lo aseguro. Una URL se divide como de esa manera:
http
)://
username:[email protected]
)digg.com
):80
después de que el nombre de dominio, por ejemplo)/news/business/24hr
)?foo=bar&baz=frob
)#foobar
).Una URL "con todas las funciones" se vería así:
http://foobar:[email protected]:8080/some/path/file.html;params-here?foo=bar#baz
NSURL
tiene una amplia gama de métodos de acceso. Puede consultarlos en la documentación de la clase NSURL
, sección Accediendo a las partes de la URL. Para referencia rápida:
-[NSURL scheme]
= http-[NSURL resourceSpecifier]
= (todo, desde // hasta el final de la dirección URL)-[NSURL user]
= foobar-[NSURL password]
= carse-[NSURL host]
= example.com-[NSURL port]
= 8080-[NSURL path]
=/some/pat h/file.html-[NSURL pathComponents]
= @ [ "/", "algunos", "camino", "file.html"] (Nótese que el inicial/es parte de ella)-[NSURL lastPathComponent]
= archivo.html-[NSURL pathExtension]
= html-[NSURL parameterString]
= params-aquí-[NSURL query]
= foo = bar-[NSURL fragment]
= BazLo que usted quiere, sin embargo, es algo así:
NSURL* url = [NSURL URLWithString:@"http://digg.com/news/business/24hr"];
NSString* reducedUrl = [NSString stringWithFormat:
@"%@://%@/%@",
url.scheme,
url.host,
url.pathComponents[1]];
Para su URL de ejemplo, lo que parece querer es el protocolo, el hos t y el primer componente de ruta. (El elemento en el índice 0 en la matriz devuelta por -[NSString pathComponents]
es simplemente "/", por lo que desea que el elemento en el índice 1. Las otras barras se descartan.)
muchas gracias – Melina
impresionante respuesta hombre, gracias! –
para cualquiera que lea esto: necesita obtener '[url.pathComponents objectAtIndex: 1]' en lugar del índice '0', porque las barras son en realidad elementos de la matriz, haciendo que el código de esta respuesta muestre' http: // digg.com // ' – Dima