2010-08-10 23 views
0

Je dois isoler un identifiant dans une chaîne à l'aide de javascript. J'ai réussi à se rendre à la partie où je reçois à l'identité, mais je veux être en mesure de chaîne le reste de la chaîne de sorte qu'il ne laisse que le numéro d'identification comme celui-ci:Comment supprimer la dernière partie d'une chaîne de requête

var urlString = "http://mysite.co.za/wine/wine-blog/blogid/24/parentblogid/15.aspx"; 


    // if the blogid is found in the url string 

    if (urlString.indexOf("blogid") != -1) { 
     alert("blogid id found"); 

     // we strip the string to isolate the blogid 

     url = urlString.substring(urlString.indexOf("blogid") + 7); 

     //alert("url : " + url) 
     blogId = url.substring(0, urlString.indexOf("/")); 

     alert("blogId : " + blogId) 
    } 

J'ai besoin pour être en mesure de tout dépouiller après le 24.

Merci à tous.

+0

Avez-vous essayé spliting la chaîne avec delimiter «/»? essayez d'utiliser string.split ("/") et utilisez l'opération de tableau pour vous reposer. – KoolKabin

Répondre

2
var tempString = urlString.Split("blogid")[1]; 
var blogIdStr = tempString.Split("/")[1]; 

pour l'entier:

var blogId = parseInt(blogIdStr); 

[edit:]
forme longue serait:

var tempArray = urlString.Split("blogid"); 
// try: 
// alert(tempArray, tempArray.length); 
var tempString = tempArray[1]; 
(...) 
+0

Vous plaisantez! :) Merci Martin! –

+0

Pouvez-vous me dire comment le [1] fonctionne s'il vous plaît Martin? –

+0

édité ma réponse pour une meilleure compréhension. ^^ @autres réponses: Je suis d'accord sur la puissance de regexp, bien que pour les programmeurs inexpérimentés en regexp (comme moi), ce qui précède est beaucoup plus lisible et peut être directement tracé. En outre, lors du débogage, vous verrez que la chaîne "blogid" apparaît deux fois, créant ainsi un tempArray avec 3 champs. Parlez de recherches gourmandes ou non. –

0

Vous pouvez essayer ceci:

var blogIdStr = urlString.replace(/(.*\/blogid\/\d+).*/, "$1") 
0

C'est un de ces rares les cas où une expression rationnelle est à la fois plus simple et plus facile à comprendre:

var matches = urlString.match(/\/blogid\/(\d+)\//); 
if (matches) { 
    var id = matches[1]; 
} 

ou, si vous n'êtes pas inquiet au sujet des erreurs:

var id = urlString.match(/\/blogid\/(\d+)\//)[1];