एक निश्चित चरित्र के बाद सब कुछ हटा दें


281

क्या एक निश्चित चरित्र के बाद सब कुछ हटाने का एक तरीका है या बस उस चरित्र तक सब कुछ चुनना है? मुझे एक href से और "?" तक का मान मिल रहा है, और यह हमेशा एक अलग मात्रा में वर्ण होने वाला है।

ऐशे ही

/Controller/Action?id=11112&value=4444

मैं चाहता हूं कि href /Controller/Actionकेवल हो, इसलिए मैं "" के बाद सब कुछ निकालना चाहता हूं।

अब मैं इसका उपयोग कर रहा हूं:

 $('.Delete').click(function (e) {
     e.preventDefault();

     var id = $(this).parents('tr:first').attr('id');                
     var url = $(this).attr('href');

     console.log(url);
 }

जवाबों:


468
var s = '/Controller/Action?id=11112&value=4444';
s = s.substring(0, s.indexOf('?'));
document.write(s);

यहाँ नमूना

मुझे यह भी उल्लेख करना चाहिए कि देशी स्ट्रिंग फ़ंक्शंस नियमित अभिव्यक्तियों की तुलना में बहुत तेज़ हैं, जिन्हें केवल आवश्यक होने पर ही उपयोग किया जाना चाहिए (यह उन मामलों में से एक नहीं है)।

'नहीं?' के लिए खाते का अद्यतन कोड

var s = '/Controller/Action';
var n = s.indexOf('?');
s = s.substring(0, n != -1 ? n : s.length);
document.write(s);

यहाँ नमूना


15
यह स्पेगेटी कोड सबसे अच्छा जवाब नहीं होना चाहिए। विभाजित विधि उत्तर देखें
LastTribunal

1
एलओएल - किसी तरह जो रेगेक्स को नहीं समझते हैं और कैसे विभाजन के कामों को वोटिंग शक्तियां मिलीं। स्ट्रिंग विधियों को समझना पर्याप्त है। कम से कम यह समझना कि चीजें कैसे काम करती हैं और सबसे बड़ा कोड दुनिया पर शासन करता है: पी तो मैंने विभाजित उत्तर (भेड़ियों को बदलने के लिए) के लिए कदम स्पष्टीकरण द्वारा एक कदम जोड़ा।

1
एलओएल - विभाजन विभाजन का उपयोग न करने के लिए रीगेक्स को +1 स्वीकार कर सकता है? LoL - जावास्क्रिप्ट का उपयोग न करने के लिए जावास्क्रिप्ट regex so +1? अधिक कोड और जटिलता इसे सरल कार्य कैसे बना सकती है? Regex और स्प्लिट दोनों सरल और अधिक प्रभावी नहीं है?

294

आप split()फ़ंक्शन का उपयोग भी कर सकते हैं । यह सबसे आसान लगता है जो मेरे दिमाग में आता है :)।

url.split('?')[0]

jsFiddle डेमो

एक फायदा यह है कि यह विधि तब भी काम करेगी ?जब स्ट्रिंग में कोई भी नहीं है - यह पूरी स्ट्रिंग लौटाएगा।


1
इस स्थिति में [0] क्या करता है?
देजन।

13
splitएक सरणी देता है (इस मामले में इसके दो तत्व हैं, 0और 1), और [0]लौटे सरणी का पहला तत्व प्राप्त करता है।
कापा

41
+1, इसके बारे में सबसे अच्छी बात यह है कि यह हमेशा काम करता है, भले ही कोई 'क्यों न हो?'
केविन

यदि हम '\' को विभाजित करना चाहते हैं तो हमें क्या करना चाहिए?
anud33p

1
इस जवाब से प्यार करें, यह इतना सरल और अभी तक वास्तव में शक्तिशाली है जो आपको देता है
रिचलेविस

19
var href = "/Controller/Action?id=11112&value=4444";
href = href.replace(/\?.*/,'');
href ; //# => /Controller/Action

यह काम करेगा अगर यह एक '?' और अगर यह नहीं है


यह सिर्फ 'हटा देगा?' और कुछ अन्य लोगों ने ओपी से नहीं पूछा
केविन

4
यह ?(शामिल) के बाद सब कुछ निकाल देगा
mcont

2
सबसे अच्छा जवाब ! ओपी ने बाद में हर किसी ?को हटाने के लिए कहा और स्पष्ट रूप से ?यह भी कहा कि हटाने के लिए कहा : मैं चाहता हूँ कि href होना चाहिए / नियंत्रक / कार्रवाई केवल

3

अगर आप भी रखना चाहते हैं "?" और उस विशेष चरित्र के बाद सब कुछ हटा दें , आप कर सकते हैं:

var str = "/Controller/Action?id=11112&value=4444",
    stripped = str.substring(0, str.indexOf('?') + '?'.length);

// output: /Controller/Action?

यह काम नहीं करता है यदि स्ट्रिंग में शामिल नहीं है?
स्टीफन बिजिटिटर

@StephanBijzitter हाँ मुझे पता है। चूंकि मेरा जवाब कहता है: "अगर आप भी रखना चाहते हैं ! " - स्पष्ट रूप से रखने के लिए स्ट्रिंग में एक प्रश्न चिह्न होना चाहिए ..
patad

अजीब बात है, लगता है कि मेरी टिप्पणी @ इमरान द्वारा अन्य उत्तर के लिए थी। न जाने क्यों मैंने इसे आपके उत्तर पर पोस्ट कर दिया।
Stephan Bijzitter

1

बहुत देर से पार्टी हो सकती है: पी

आप एक बैक रेफरेंस $ का उपयोग कर सकते हैं '

$' - Inserts the portion of the string that follows the matched substring.

let str = "/Controller/Action?id=11112&value=4444"

let output = str.replace(/\?.+/g,"$'")

console.log(output)


1

यह मेरे लिए बहुत अच्छी तरह से काम करता है:

var x = '/Controller/Action?id=11112&value=4444';
var remove_after= x.indexOf('?');
var result =  x.substring(0, remove_after);
alert(x);

0

मेरे लिए काम किया:

      var first = regexLabelOut.replace(/,.*/g, "");

-1

जेएस स्ट्रिंग के संदर्भ में देखें लिंक के लिए जावास्क्रिप्ट का उपयोग करके इसे आसानी से किया जा सकता है

EDIT यह आसानी से किया जा सकता है। ;)

var url="/Controller/Action?id=11112&value=4444 ";
var parameter_Start_index=url.indexOf('?');
var action_URL = url.substring(0, parameter_Start_index);
alert('action_URL : '+action_URL);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.