/ / स्ट्रिप / स्ट्रिंग के भीतर रिक्त स्थान बदलें - रूबी, रेगेक्स

एक स्ट्रिंग के भीतर रिक्त स्थान / स्थान बदलें - रूबी, रेगेक्स

एक स्ट्रिंग दिया गया "5 900 000"

मैं उपयोग कर रिक्त स्थान से छुटकारा पाना चाहता हूँ gsub निम्नलिखित पैटर्न के साथ:

gsub(/s/, "")

लेकिन यह काम नहीं करता है। न ही करता है:

gsub(" ", "")

उत्तर:

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

यदि आप जगह में प्रतिस्थापन करना चाहते हैं, तो आपको इसका उपयोग करने की आवश्यकता है:

str.gsub!(/s/,"")

वैकल्पिक रूप से, gsub प्रतिस्थापन के साथ स्ट्रिंग देता है

str2 = str.gsub(/s/,"")

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

str.gsub!(/D/,"")

उत्तर के लिए 7 № 2
>> "5 900 00".gsub(" ","")
=> "590000"

क्या यह वास्तव में एक स्ट्रिंग है?

.gsub वैल्यू देता है, यदि आप वैरिएबल कोशिश को बदलना चाहते हैं .gsub! ("", "")


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

सिर्फ किक्स के लिए: क्या आपको यहां नियमित अभिव्यक्ति की भी आवश्यकता है? String#tr चाल सिर्फ ठीक करना चाहिए:

telemachus ~ $ irb
>> "500 500 12".tr(" ", "")
=> "50050012"
>> "500 500 12".tr!(" ", "")
=> "50050012"

साथ ही gsub तथा gsub!, द ! विधि बदले गए परिणाम को वापस करने के विरोध में जगह को बदल देती है। मैं नहीं जानता कि आप यहां क्या चाहते हैं।

इस तरह के मामले में, tr मेरे लिए अधिक सरल लगता है। मैं अनुकूलन की तलाश नहीं कर रहा हूं, लेकिन यह याद रखना अच्छा है कि बहुत सारी स्ट्रिंग विधियां हैं अन्य नियमित अभिव्यक्तियों की तुलना में।


जवाब के लिए 2 № 4

मैं सुझाव देता हूं str.gsub!(/s+/, "") दक्षता कारणों के लिए।


जवाब के लिए 2 № 5

इस आशा की कोशिश करें यह सहायक होगा:

2.2.1 :001> str= "  Jai   Kumar rajput ";
# "  Jai   Kumar rajput "
2.2.1 :001> str.squish.downcase.tr(" ","");
# "JaiKumarRajput"

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

"5 900 000".gsub(/s/,"") ठीक काम करता है

जो मैंने देखा वह आपने जीएसबी लिखा था डॉट (फू, बार) जहां यह होना चाहिए string.gsub (foo, बार)


उत्तर के लिए 0 № 7
print "5 900 000".gsub(/s/, "")

मेरे लिये कार्य करता है।

क्या आप चर को परिणाम को प्रभावित कर रहे हैं?


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

क्या मतलब है आपका

str.gsub!.(/s/,"")

विस्मयादिबोधक चिह्न के साथ?


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

मजाकिया बात यह है कि जब मैं स्ट्रिंग को प्रिंट करता हूं तो मुझे मिलता है

697302240000

लेकिन डेटाबेस में क्या होता है: 697 000। मुझे पता है कि मैंने जो पैटर्न दिए हैं, उन्हें आपके सुझावों के साथ-साथ आपके सुझावों को भी काम करना चाहिए, लेकिन ऐसा लगता है कि यह थोड़ा "डोडी" मामला है :-)