2013-01-22 21 views
18

var t = "\some\route\here"rimuovere tutto ciò dopo l'ultima barra rovesciata

ho bisogno "\ alcuni \ percorso" da esso.

Grazie.

+0

Guardate qui: http://stackoverflow.com/questions/6764435/jquery-split-after-last-slash –

+2

Non può essere fatto con jQuery ': P'. –

+0

[MDN - 'String.prototype.lastIndexOf()'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/lastIndexOf) – KyleMit

risposta

40

È necessario lastIndexOf e substr ...

var t = "\\some\\route\\here"; 
t = t.substr(0, t.lastIndexOf("\\")); 
alert(t); 

Inoltre, è necessario raddoppiare \ caratteri nelle stringhe in cui sono utilizzati per sfuggire caratteri speciali.

Aggiornamento Dal momento che questo è regolarmente rivelando utile per gli altri, ecco un frammento di esempio ...

// the original string 
 
var t = "\\some\\route\\here"; 
 

 
// remove everything after the last backslash 
 
var afterWith = t.substr(0, t.lastIndexOf("\\") + 1); 
 

 
// remove everything after & including the last backslash 
 
var afterWithout = t.substr(0, t.lastIndexOf("\\")); 
 

 
// show the results 
 
console.log("before   : " + t); 
 
console.log("after (with \\) : " + afterWith); 
 
console.log("after (without \\) : " + afterWithout);

+0

Grazie. Come faccio Doppio. Ho provato questo t.replace ("\\", "\\\\") non funzionava – INgeek

+1

Hai solo bisogno di farlo quando si imposta un valore di stringa direttamente nel codice, come nell'esempio sopra. Se lo ricevi da qualche altra parte (l'URL, ad esempio), non preoccuparti :) – Archer

+0

t.replace (/ \\/g, "\\\\") non ha funzionato altrettanto bene – INgeek

5

Come indicato nella @ risposta di Archer, è necessario raddoppiare su i backslash. Propongo di usare espressioni regolari sostituire per ottenere la stringa che si desidera:

var t = "\\some\\route\\here"; 
t = t.replace(/\\[^\\]+$/,""); 
alert(t); 
+0

Grazie, non riesci ancora a trovare il modo di raddoppiare i backslash – INgeek

+0

È necessario farlo all'interno della stringa stessa. In JavaScript "\" è il carattere di escape, quindi "\ k" (ad esempio) viene risolto come "k". – ic3b3rg

+0

Grazie mille – INgeek

1

Usando JavaScript si può semplicemente raggiungere questo obiettivo. Rimuovere tutto dopo l'ultimo "_" occurance.

var newResult = t.substring(0, t.lastIndexOf("_")); 
+0

isuru, non è già ben coperto dalle risposte esistenti? – KyleMit

+0

@KyleMit Non vedi? Ha aggiornato la sua risposta precedente. – isuru

+0

Per aggiungere * ancora più * informazioni, ma anche la versione datata [22 gennaio 2013] (https://stackoverflow.com/posts/14462451/revisions) include 't = t.substr (0, t.lastIndexOf (" \\ "));' che è identico alla tua risposta – KyleMit

Problemi correlati