Pobieram ten dziwny adres URL z obiektu na przycisku Twittera:

http://platform.twitter.com/widgets/tweet_button.1329950604.html#_=1330013339435&count=none&hashtags=allstar&id=twitter-widget-10&lang=pl&original_referer=http%3A%2F%2Fwww.nba.com%2Fpulse%2Fallstar 2F2012%2Findex.html&related=%40nba&size=m&text=Sprite%20Slam%20Dunk%20Contest%20is%20trending%20on%20NBA%20All-Star%20Pulse%20&url=http%3A%2F%2Fwww.nba.com%2Fpulse%2Fall %2F2012%2Ftopics%2Fspriteslamdunk.html

Muszę pobrać ostatnią część przed „.html”, który w powyższym przykładzie to: spriteslamdunk

Wydaje się to pojawiać po % 2Ftopics% 2F

Nie wiesz, jak to wyodrębnić za pomocą jQuery?

[EDIT] Wygląda na to, że muszę to zrobić za pomocą Regex? Nie zrobiłeś wiele z Regexem w tym zakresie?

1
Xtian 23 luty 2012, 20:04

3 odpowiedzi

Najlepsza odpowiedź

Var answer = url.substring(url.lastIndexOf("%2F") + 3).replace(".html","")

0
DaveS 23 luty 2012, 20:09

Chyba będziesz musiał użyć wyrażenia regularnego "(\w+)\.html$"

3
Eric Yin 23 luty 2012, 20:06

Chcesz pobrać ciąg przed .html i po ostatnim pojawieniu się %2F.

Możesz użyć wyrażenia regularnego /%2F([^%]+?)(\.html$)/. \.html$ dopasowuje ciąg przed ostatnim pojawieniem się; Część ([^%]+?) pasuje do najkrótszego ciągu, który nie zawiera % i przed .html, który jest tym, co chcesz pobrać; %2F wyklucza ten ciąg w dopasowaniach.

var str = "http://platform.twitter.com/widgets/tweet_button.1329950604.html#_=1330013339435&count=none&hashtags=allstar&id=twitter-widget-10&lang=en&original_referer=http%3A%2F%2Fwww.nba.com%2Fpulse%2Fallstar%2F2012%2Findex.html&related=%40nba&size=m&text=Sprite%20Slam%20Dunk%20Contest%20is%20trending%20on%20NBA%20All-Star%20Pulse%20&url=http%3A%2F%2Fwww.nba.com%2Fpulse%2Fallstar%2F2012%2Ftopics%2Fspriteslamdunk.html"

var matches = str.match(/%2F([^%]+?)(\.html$)/)

matches
// => ["%2Fspriteslamdunk.html", "spriteslamdunk", ".html"]

matches[1] // What you want.
0
steveyang 23 luty 2012, 20:28