2012-06-04 8 views
13

मैं एक काल से यूआरएल के अंतिम भाग को हटाने की जरूरत से पिछले तत्व निकालें ..यूआरएल

मैं

<span st_url="http://localhost:8888/careers/php-web-developer-2" 
st_title="PHP Web Developer 2" class="st_facebook_large" displaytext="facebook" 
st_processed="yes"></span></span> 

है और मैं st_url लेने के लिए और इसलिए यह से php-web-developer-2 हटाने की जरूरत यह सिर्फ http://localhost:8888/careers/ है।

लेकिन मुझे यकीन नहीं है कि यह कैसे करें। php-web-developer-2 हमेशा ऐसा नहीं होगा लेकिन इसमें / नहीं होगा। यह हमेशा - अलग स्ट्रिंग होगा।

कोई मदद !!??

उत्तर

8
$('span').attr('st_url', function(i, url) { 
    var str = url.substr(url.lastIndexOf('/') + 1) + '$'; 
    return url.replace(new RegExp(str), ''); 
}); 

DEMO

+1

Plz ध्यान दें कि इस समाधान साधारण नहीं है। यदि यूआरएल में कहीं भी आपके यूआरएल का आखिरी हिस्सा होता है, तो यह गलत परिणाम देगा; जैसे 'http://somewhere.com/test/e' असफल हो जाएगा। गिसवे का जवाब बेहतर प्रतीत होता है। – dotNET

+0

इस समाधान में एक बहुत बड़ी बग है क्योंकि अगर यूआरएल http: // localhost: 8888/करियर 1/करियर "है, तो परिणाम' http: // localhost: 8888/1/करियर "होगा, पहला '" करियर "को हटा दिया गया है – jscripter

+0

आपके डेमो को कुछ काम की ज़रूरत है क्योंकि यह समाधान का प्रदर्शन नहीं करता है। – mikoop

0

सबसे पहले आप टैग पार्स करने के लिए की जरूरत है। अगला st_url मान निकालने का प्रयास करें जो आपका यूआरएल है। फिर निकाले गए यूआरएल के अंतिम चरित्र से लूप का उपयोग करें और जब तक आप '/' न देखें तब तक उन्हें छोड़ दें। इस तरह आप जो चाहते हैं उसे निकालना चाहिए। इसे ध्यान में रखें और कोड लिखने का प्रयास करें।

2

आप इसे यहाँ काम देख सकते हैं: http://jsfiddle.net/xKxLR/

var url = "http://localhost:8888/careers/php-web-developer-2"; 
var regex = new RegExp('/[^/]*$'); 
console.log(url.replace(regex, '/')); 
+0

एचएम ... मैं '*' या '+' के बारे में संदेह कर रहा था ... आपका संस्करण एक खाली पूंछ "http: // xxx/yyy /" की अनुमति देता है, मेरा नहीं, दोनों काम करने लगते हैं (मेरे में, कोई प्रतिस्थापन नहीं किया जाता है, मुझे लगता है) – xtofl

2

आप यूआरएल के अंतिम टुकड़ा 'पार्स करने के लिए रेगुलर एक्सप्रेशन का उपयोग कर सकते हैं:

var url="http://localhost:8888/careers/php-web-developer"; 

var baseurl=url.replace(
    new RegExp("(.*/)[^/]+$"), 
    "$1")); 

RegExp बात मूल रूप से कहना है: " कुछ भी मिलान करें, फिर एक स्लैश और फिर स्ट्रिंग के अंत तक सभी गैर-स्लेश "।

प्रतिस्थापन फ़ंक्शन उस मिलान भाग को लेता है, और स्ट्रिंग के "कुछ भी, फिर एक स्लैश" भाग के साथ इसे बदल देता है।

RegexBuddy इस सब पर बहुत सारी जानकारी है।

+0

मैं regex पसंद करते हैं। यह स्वीकार्य उत्तर होना चाहिए – jscripter

9

इसका उपयोग करें।

$('span').attr('st_url', function(i, url) { 
    var to = url.lastIndexOf('/') +1; 

    x = url.substring(0,to); 
    alert(x); 
})​ 

आप Demo

+3

यदि आप पीछे की स्लैश –

9

के रूप में इस के रूप में सरल देख सकते हैं:

var to = url.lastIndexOf('/'); 
to = to == -1 ? url.length : to + 1; 
url = url.substring(0, to); 
+0

को खत्म करना चाहते हैं तो '+ 1' निकालें यह बेहतर काम है क्योंकि यदि आपके पास पथ के साथ कुछ शब्द मिलान है, तो प्रतिस्थापन पहले मैच को हटाने का काम करेगा –