2016-08-19 6 views
-1

Ich versuche, das letzte Segment von URLs wie folgt zu extrahieren:Erste letztes Segment url

localhost:15043/Maintenance/ModelDetails/3?makeId=14 

und diesem:

//localhost:15043/Maintenance/ModelDetails/3 

ich unten Code verwendet, aber dieser Code funktioniert nicht in diesem Link:

localhost:15043/Maintenance/ModelDetails/3?makeId=14 

var last_segment = window.location.hash.split('/').pop(); 
+0

Sie sagten in einem Kommentar unten, dass '14' das Ergebnis sein sollte. Nehmen Sie sich mehr Zeit, wenn Sie eine Frage stellen, um klar zu beschreiben, was das Ergebnis in jeder Situation sein soll. An dieser Stelle ist die Frage sehr unklar. –

Antwort

3

Sie den Pfad diese verwenden können, suchen und/oder Hash-Teil des window.location zu tun. Ignoriere den Parser hier, da er nur als Beispiel benutzt wird, um diesen Code auszuführen.

var url = "http://localhost:15043/Maintenance/ModelDetails/3?blah=abc&makeId=14#test"; 
 
function parseUrl(url) { 
 
    var a = document.createElement("a"); 
 
    a.href = url; 
 
    return a; 
 
} 
 
var parser = parseUrl(url); 
 
var last_segment = parser.pathname.split('/').pop(); 
 
var searchParams = parser.search.substring(1).split("&"); 
 
var lastParamValue = searchParams[searchParams.length-1].split("=")[1]; 
 
var hash = parser.hash; 
 

 
console.log(last_segment); 
 
console.log(lastParamValue); 
 
console.log(hash);

+1

Ja, das habe ich schon in meinem Schnitt bemerkt. – 10100111001

+0

Ich möchte 14 erhalten –

+0

Um es richtig auszugeben, sollten Sie ein Schema zur URL hinzufügen. Zumindest in Firefox gibt es leere Ergebnisse für den Pfad und die Suche. –

2

Wird nicht diese einfache regex .+\/ Arbeit für Sie mit replace()?

var getLastSegment = function(url) { 
 
    return url.replace(/.+\//, ''); 
 
}; 
 

 
console.log(getLastSegment("localhost:15043/Maintenance/ModelDetails/3?makeId=14")); 
 

 
console.log(getLastSegment("//localhost:15043/Maintenance/ModelDetails/3"));

0

können Sie verwenden, um eine regexp in Ihrem .split() Methode.

const pattern1 = /\?|\/|\&/; 
const pattern2 = /\//; 
const str = 'localhost:15043/Maintenance/ModelDetails/3?makeId=14'; 

console.log(str.split(pattern1).pop()); // return 'makeId=14' 
console.log(str.split(pattern2).pop()); // return '3?makeId=14' 

Die pattern1 wird die URL auf den ?, / und & Zeichen aufgeteilt, und pattern2 nur auf / Charakter. So können Sie die Regexp anpassen, um mit dem, was Sie wollen, übereinzustimmen.

Verwandte Themen