2013-01-22 15 views
18

Entfernen Sie alles nach dem letzten Backslash

Ich brauche "\ some \ route" von ihm.

Vielen Dank.

+0

Schauen Sie hier: http://stackoverflow.com/questions/6764435/jquery-split-after-last-slash –

+2

Es kann nicht mit jQuery 'erfolgen: P'. –

+0

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

Antwort

40

Sie benötigen lastIndexOf und substr ...

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

Außerdem müssen Sie \ Zeichen in Strings verdoppeln, wie sie für die Flucht Sonderzeichen verwendet werden.

aktualisieren Da diese regelmäßig für andere nützlich erweist, ist hier ein Snippet Beispiel ...

// 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

Vielen Dank. Wie mache ich doppelt. Ich habe versucht, diese t.replace ("\\", "\\\\") es funktioniert nicht – INgeek

+1

Sie müssen es nur tun, wenn Sie einen String-Wert direkt im Code, wie im obigen Beispiel. Wenn Sie es von woanders (die URL, zum Beispiel) bekommen, dann machen Sie sich keine Sorgen :) – Archer

+0

t.replace (/ \\/g, "\\\\") hat nicht so gut funktioniert – INgeek

5

Wie bereits erwähnt in @ Archer Antwort, Sie oben auf verdoppeln müssen die Backslashes. Ich schlage vor, regex replace zu verwenden, um die gewünschte Zeichenfolge zu erhalten:

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

Danke, kann immer noch nicht finden, wie man die Backslashes verdoppelt – INgeek

+0

Sie müssen das innerhalb der Zeichenkette selbst tun. In JavaScript ist "\" das Escape-Zeichen, also wird "\ k" (zum Beispiel) als "k" aufgelöst. – ic3b3rg

+0

Vielen Dank – INgeek

1

Mit JavaScript können Sie dies einfach erreichen. Entferne alles nach dem letzten "_" Ereignis.

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

isuru, ist das nicht schon gut durch die vorhandenen Antworten abgedeckt? – KyleMit

+0

@KyleMit Kannst du sehen? Er hat seine vorherige Antwort aktualisiert. – isuru

+0

Um * noch mehr * info hinzuzufügen, aber selbst die Version vom [22.01.2013] (https://stackoverflow.com/posts/14462451/revisions) enthält 't = tstr (0, t.lastIndexOf (" \\ "));' das ist identisch mit deiner Antwort – KyleMit

Verwandte Themen