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

  • Arun Kumar

    Arun Kumar

    18 Mart 2010
  • Autocar

    Autocar

    11 Mart 2006
  • RaverX DouBle StAg XI

    RaverX DouBl

    23 Mayıs 2008