2011-05-11 17 views

Respuesta

17

Para obtener el último elemento en una ruta, puede dividir la cadena en / y luego pop():

var url = "http://blablab/test"; 
alert(url.split("/").pop()); 
//-> "test" 

Para especificar una parte individual de un camino, divididos en / y utilizar notación de corchetes para acceder al elemento:

var url = "http://blablab/test/page.php"; 
alert(url.split("/")[3]); 
//-> "test" 

O, si quieres todo después de la tercera barra, split(), slice() y join():

var url = "http://blablab/test/page.php"; 
alert(url.split("/").slice(3).join("/")); 
//-> "test/page.php" 
+0

Tenga en cuenta que si hay una cuarta barra inclinada, 'pop' obtendrá todo después de la última barra y' [3] 'aparecerá entre la tercera y la cuarta barra. –

+0

@George: notado, actualizado. –

+1

Gracias a todos por la respuesta rápida. Esta respuesta ayudó a mi historia para la pregunta de noobish;) – Frank

2
var string = 'http://blablab/test' 
string = string.replace(/[\s\S]*\//,'').replace(/[\s\S]*\//,'').replace(/[\s\S]*\//,'') 
alert(string) 

Esta es una expresión regular. Voy a explicar a continuación

La expresión regular es /[\s\S]*\//

/ es el comienzo de la expresión regular

Dónde [\s\S] significa espacio en blanco o no blanco (nada), que no debe confundirse con . que no coincide con saltos de línea (. es lo mismo que [^\r\n]).

* significa que coincide con ninguna parte de cero a un número ilimitado de [\s\S]

\/ Medios coincidir con un carácter de barra

La última / es el final de la expresión regular

+1

creó un violín para probar .. http://jsfiddle.net/DSzJL/ –

+0

3 expresión regular reemplaza probablemente no es el enfoque más eficiente. –

+0

Lo sé, me gusta regex asignar, pero lo hice upvote las otras respuestas sabiendo esto. –

2
var str = "http://blablab/test"; 
var index = 0; 
for(var i = 0; i < 3; i++){ 
    index = str.indexOf("/",index)+1; 
} 
str = str.substr(index); 

para que sea un chiste que podría hacer lo siguiente:

str = str.substr(str.indexOf("/",str.indexOf("/",str.indexOf("/")+1)+1)+1); 
0

Usted puede utilizar split a dividir la cadena en partes y utilizar slice para devolver todas las partes después de la tercera división.

var str = "http://blablab/test", 
    arr = str.split("/"); 
arr = arr.slice(3); 
console.log(arr.join("/")); // "test" 

// A longer string: 
var str = "http://blablab/test/test"; // "test/test"; 
0

se puede utilizar una expresión regular como éste:

'http://blablab/test'.match(/^(?:[^/]*\/){3}(.*)$/); 
// -> ['http://blablab/test', 'test] 

método de una cadena de match que tampoco da una matriz (de todo el partido, en este caso, toda la entrada, y de cualquier captura grupos (y queremos el primer grupo de captura)), o nulo.Por lo tanto, para el uso general que necesita para sacar el 1 elemento de la matriz, o null si un partido no se encontró:

var input = 'http://blablab/test', 
    re = /^(?:[^/]*\/){3}(.*)$/, 
    match = input.match(re), 
    result = match && match[1]; // With this input, result contains "test" 
Cuestiones relacionadas