2011-05-11 11 views

risposta

17

Per ottenere l'ultimo elemento in un percorso, è possibile dividere la stringa su / e quindi pop():

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

Per specificare una singola parte di un percorso, divisi su / e utilizzare la notazione staffa per accedere alla voce:

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

Oppure, se si vuole tutto dopo la terza barra, split(), slice() e join():

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

Ricorda che se c'è una quarta barra, 'pop' questo otterrà tutto dopo l'ultima barra e' [3] 'otterrà tutto tra la terza e la quarta barra. –

+0

@George: annotato, aggiornato. –

+1

Grazie a tutti per la rapida risposta questa risposta ha aiutato la mia sory per la domanda noobish;) – Frank

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

Questa è un'espressione regolare. Spiegherò di seguito

L'espressione regolare è /[\s\S]*\//

/ è l'inizio della regex

Dove [\s\S] significa spazi bianchi o non spazi bianchi (qualsiasi cosa), da non confondere con . che non corrisponde interruzioni di riga (. corrisponde a [^\r\n]).

* significa che abbiniamo ovunque da zero a un numero illimitato di [\s\S]

\/ significa Incontro un carattere barra

L'ultima / è la fine della regex

+1

creato un violino per il test. Http://jsfiddle.net/DSzJL/ –

+0

3 l'espressione regolare sostituisce probabilmente non è l'approccio più efficiente. –

+0

Lo so, mi piace assegnare regex ma ho sviato le altre risposte sapendo questo. –

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); 

per renderlo un uno di linea che si potrebbe fare la seguente:

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

È possibile utilizzare split per dividere la stringa in parti e utilizzare slice di restituire tutte le parti dopo la terza fetta.

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

si potrebbe usare un'espressione regolare come questo:

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

metodo Una stringa match si sia dà una matrice (di tutta la partita, in questo caso l'intero di ingresso, e di qualsiasi cattura gruppi (e vogliamo il primo gruppo di cattura)), o null.Così, per uso generale è necessario estrarre l'elemento 1 ° della matrice, o null se una partita non è stata trovata:

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