2017-04-26 1 views
2

Ich brauche nur den Dateinamen ohne die Erweiterung von einer URL und kann nicht ganz dorthin gelangen.Get Filename von URL und Strip-Dateierweiterung

Hier ist meine URL in Frage: https://www.mealenders.com/shop/index.php/shop/solo-pack.html

Hier ist, was ich versucht habe:

function() { 
var value={{Page Path}}.split("/"); 
return value.reverse()[0]; 
} 

Das hat mich fast da bekommt, wie es "Solo-pack.html" zurückgibt. Was muss ich noch tun, um die ".html" dafür los zu werden?

Vielen Dank im Voraus.

Antwort

3

Sie können die folgenden mit Hilfe von Javascript tun. Pop gibt das letzte Element zurück, das eine Zeichenfolge ist, und dann können Sie die replace-Funktion verwenden, um nur den Dateinamen ohne .html am Ende zu erhalten.

function getFilename() { 
    return {{ Page Path }}.split('/').pop().replace('.html', ''); 
} 

Ich sehe, dass {{Seitenpfad}} ist wahrscheinlich einige Sprache Templating, aber man könnte das Skript ändern, die aktuelle URL zu bekommen und dann den Dateinamen erhalten, wie so.

Darüber hinaus könnten Sie es dynamischer machen, mit jeder Dateierweiterung mit den folgenden umzugehen. Sie müssen den Index des Zeitraums mit indexOf und dann sub string vom Anfang des Dateinamens bis zur Position des Zeitraums abrufen.

function getFilename() { 
    var filename = window.location.href.split('/').pop(); 
    return filename.substr(0, filename.lastIndexOf('.'); 
} 
+0

Diese zweite Option funktionierte perfekt. Seitenpfad ist eine vorhandene Variable in GTM auf der Site, an der ich gerade arbeite. Danke vielmals. –

+0

@KevinPhillips kein Problem, möchten Sie vielleicht die dritte Option, wenn Sie andere Dateien als nur HTML behandeln. Bitte markieren Sie auch meine Antwort als akzeptiert, wenn Sie glauben, dass sie Ihre Frage beantwortet. Vielen Dank! – kyle

0

function getFileName(url) { 
 
    return url.split("/").pop().split(".")[0]; 
 
} 
 
var url = "https://www.mealenders.com/shop/index.php/shop/solo-pack.html"; 
 
console.log(getFileName(url));

0
var sFilename = "solo-pack.html"; 
var iIndexOfPeriod = sFilename.indexOf("."); 
var sFilenameWithoutExtension = sFilename.substring(0, iIndexOfPeriod); 
+0

Was passiert, wenn im Dateinamen kein '.' vorhanden ist? –

+0

In diesem Fall gibt es keine Erweiterung. –

0

Wenn Sie loswerden müssen von jede Erweiterung, können Sie .replace() mit regulären Ausdruck verwenden:

var url = "https://www.mealenders.com/shop/index.php/shop/solo-pack.html"; 
 

 
function getFilename (path) { 
 
    return path.toString().split('/').pop().replace(/\.\w+$/, ''); 
 
} 
 

 
console.log(getFilename(url));

Dies wird zum Beispiel Wechseltest/index.html in index aber index.php.default in index.php und auch test.name.with.dots.txt ->test.name.with.dots

0
function() { 
var value={{Page Path}}.split("/"); 
var fileName= value.reverse()[0].split('.')[0]; 
return fileName; 
}