2012-03-31 16 views
11

रीजिक्स उपयोग जीएसबी के साथ मेरी सभी स्ट्रिंग हटाएं, क्या कोई छोटा रास्ता है? string.gsub(/\A.*\//,'')क्या रूबी में रेगेक्स हटा है?

+3

उन तीन पात्रों को वास्तव में आप के पास मिल रहा है? –

+0

लॉल बहुत सारे स्ट्रिंग डिलीट कर रहा है। लेकिन gsub के माध्यम से ऐसा करना, ऐसा लगता है कि मैं इसे गलत कर रहा हूं। यह string.delete के माध्यम से किया जाना चाहिए, नहीं? –

+0

string.delete केवल वही अक्षर लेता है जो कोई हटाना नहीं है, कोई regexp नहीं है। string.slice! regexp के आधार पर एक स्ट्रिंग के हिस्से को हटाने के लिए इस्तेमाल किया जा सकता है लेकिन यह अब gsub है ... – Pafjo

उत्तर

5

एक तरह से अपनी स्वयं की लघु विधियों को जोड़ने के लिए है:

class String 

    def del(regexp) 
    gsub(regexp,'') 
    end 

    def del!(regexp) 
    gsub!(regexp,'') 
    end 

end 

आमतौर पर यह कोड,

ध्यान रखें एक lib/निर्देशिका में जाना होगा उदाहरण lib/स्ट्रिंग-extensions.rb के लिए कि कुछ प्रोग्रामर वास्तव में इसे नापसंद करते हैं क्योंकि यह बंदर-पैचिंग है। मुझे व्यक्तिगत रूप से परियोजनाओं के लिए यह पसंद है क्योंकि यह समझने में आसान बनाता है - एक बार मेरे पास "डेल" विधि हो जाने पर, मैं जल्दी से देख सकता हूं कि उस कॉल को केवल regexp को हटाया जा रहा है।

+0

+1, हालांकि मुझे आश्चर्य है कि कोई भी इसे वोट नहीं देता है। –

3

मुझे ऐसा नहीं लगता है।

स्ट्रिंग :: हटाए गए वर्ण हटाएं, और रेगेक्स से मेल नहीं खाता है, यह एक पूरी तरह से अलग दृष्टिकोण है।

एकमात्र तरीका मैं आपके "छोटे" की रेखा बनाने के बारे में सोच सकता हूं string.gsub!(/\A.*\//,'') (वहां बैंग पर ध्यान दें) का उपयोग करना है।

जाने का रास्ता है कि, मुझे लगता है :)

+0

@Vache हाहा, ठीक है। इसे सही किया गया: पी – Castilho

5

आप के बजाय रखने स्ट्रिंग आप करना चाहते हैं का हिस्सा निर्दिष्ट कर सकते हैं। । ।

string[/[^\/]*$/] 
संबंधित मुद्दे