रूजी / रूबी में स्ट्रिंग से स्लैश निकालें - रूबी, रेगेक्स, स्ट्रिंग, जीएसयूबी, स्लैश

अग्रिम में धन्यवाद...

मैं रूबी में नियमित अभिव्यक्ति के साथ कुछ परेशानी हो रही है, या अन्यथा एक स्ट्रिंग से एक स्लैश को हटाने का तरीका ढूंढ रहा हूं। यहाँ मेरा स्ट्रिंग कैसा दिखता है:

string = "word / word"

मैं बैकस्लैश और स्लैश दोनों को हटाने की कोशिश कर रहा हूं; मुझे यह परिणाम चाहिए:

string = "word  word"

मुझे लगता है कि मैं भागने वाले पात्रों के साथ कुछ याद कर रहा हूं, या जो जानता है कि क्या है!

मैंने यह कोशिश की है:

string.gsub(///, "")

जो बैकस्लैश को हटा देगा, लेकिन स्लैश छोड़ देता है। मैंने भागने के पात्रों के साथ और सभी जगहों पर बदलाव की कोशिश की है, जो "भी समझ में नहीं आता"

मैं रेगेक्स से भयानक हूं और सामान्य रूप से तार के साथ काम करने में बहुत निराश हूं, और मैं सिर्फ नुकसान में हूं। मुझे यकीन है कि यह कुछ स्पष्ट है, लेकिन मुझे क्या याद आ रही है?

उत्तर:

उत्तर № 1 के लिए 4

कारण है क्योंकि दोनों है / तथा अपने आप में एक रेगेक्स में मान्य वर्ण नहीं हैं। इसलिए उन्हें लगाकर भाग जाना चाहिए उनसे पहले। इसलिए हो जाता है \ तथा / बनना /। Regexp को शाब्दिक बनाने के लिए स्लैश के एक और सेट के अंदर इनको एक साथ रखना, हमें मिलता है:

string.gsub(/\//, "")

इसे लिखने का एक और तरीका है:

string.gsub(/#{Regexp.escape("/")}/, "")

Regexp स्ट्रिंग्स को विकसित करने के लिए आपको अच्छे तरीके से रबुलर की जांच करनी चाहिए।

http://rubular.com/r/ml1a9Egv4B


जवाब के लिए 2 № 2
str = "word / word"
p str.delete("/") #=>"word  word"
# to get rid of the double spaces:
p str.delete("/").squeeze(" ") #=>"word word"

जवाब के लिए 0 № 3

यह वास्तव में वही करता है जो आप चाहते हैं लेकिन उन कारणों के लिए नहीं जो आप सोचते हैं:

string = "word / word"
# => "word / word"
string.gsub(///, "")
# => "word  word"

ध्यान दें: आपको gsub की आवश्यकता है! यदि आप स्ट्रिंग की सामग्री को बदलना चाहते हैं


संबंधित सवाल
सबसे लोकप्रिय