SORU
28 EKİM 2009, ÇARŞAMBA


Nasıl JavaScript sorgu dizesi bir parametre silebilir miyim?

Standart JavaScript URL bir dize içinde bir sorgu dize düzenli ifade kullanarak başka bir parametre silmek için daha iyi bir yolu var mı?

Burada benim testlerde iş gibi görünüyor buraya kadar geldim, ama sorgu dizesi ayrıştırma yeniden icat etmek istemiyorum!

function RemoveParameterFromUrl( url, parameter ) {

    if( typeof parameter == "undefined" || parameter == null || parameter == "" ) throw new Error( "parameter is required" );

    url = url.replace( new RegExp( "\\b"   parameter   "=[^&;] [&;]?", "gi" ), "" ); "$1" );

    // remove any leftover crud
    url = url.replace( /[&;]$/, "" );

    return url;
}

CEVAP
28 EKİM 2009, ÇARŞAMBA


"[&;]?"   parameter   "=[^&;] "

Bu parametre, çünkü tehlikeli görünüyor ‘’ maç olur: . bar

?a=b&foobar=c

Ayrıca eğer parameter RegExp özel olan tüm karakterler gibi içeriyorsa başarısız olurdu ‘.’. Ve tek parametre bir örneği kaldırmak istiyorsunuz yani küresel bir düzenli ifade değil.

Bunun için basit bir RegExp kullanmak istemem, parametreleri ayrıştırmak ve istemediğiniz olanları kaybederim.

function removeURLParameter(url, parameter) {
    //prefer to use l.search if you have a location/link object
    var urlparts= url.split('?');   
    if (urlparts.length>=2) {

        var prefix= encodeURIComponent(parameter) '=';
        var pars= urlparts[1].split(/[&;]/g);

        //reverse iteration as may be destructive
        for (var i= pars.length; i-- > 0;) {    
            //idiom for string.startsWith
            if (pars[i].lastIndexOf(prefix, 0) !== -1) {  
                pars.splice(i, 1);
            }
        }

        url= urlparts[0] '?' pars.join('&');
        return url;
    } else {
        return url;
    }
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ASUS Campus Life

    ASUS Campus

    18 Mart 2013
  • Attempts at least

    Attempts at

    1 Ocak 2007
  • martin shervington

    martin sherv

    7 EKİM 2011