2016-03-31 19 views
0

definierte ich einen Abfrage-String catid als:aus einem leeren Abfrage-String entfernen url

mydomain.com/?catid= 

Wie ?catid in meiner URL zu entfernen, wenn es bitte leer ist?

+1

Können Sie etwas Code hinzufügen? Andernfalls lautet die Antwort auf Ihre Frage "Backslash drücken, bis dieser Teil gelöscht ist". – Bolza

+1

Mögliches Duplikat von [alle leeren Werte von URL entfernen] (http://stackoverflow.com/questions/14624275/remove-all-empty-values-from-url) – jeerbl

Antwort

0

Der Code aus der sehr ähnlichen Frage von Jerome Brunel funktioniert nicht mit Ihrer speziellen Anfrage.

var arr=['mydomain.com/?catid=','mydomain.com/?catid=1&id1=','mydomain.com/?catid=&id=1','mydomain.com/?catid=&id=','mydomain.com/?catid=&id=&id2=','mydomain.com/?catid=&id=1&id2=&id3=1&id4=&id5=1&id6=2']; 
function removeEmptyQueryParameters(s) { 
    return s.replace(/([\?&])([^=]+=($|&))+/g,'$1').replace(/[\?&]$/g,''); 
} 
arr.forEach(function(s) { 
    console.log(s,removeEmptyQueryParameters(s)); 
}); 
1

Ich denke, es wird ist, das die semantisch korrekte Art und Weise:

url = 'mydomain.com/?catid=' 
url = url.split('?') 
if (url.length > 1) { 
    params = url[1].split('&'); 
    params = params.map(function(e){ return e.split('='); }); 
    params = params.filter(function(e){ return (e.length > 1) && (e[1].length > 0); }); 
    url = url[0]; 
    if (params.length > 0) { 
     url += '?' + params.map(function(e){ return e.join('='); }).join('&'); 
    } 
} else { 
    url = url[0]; 
}