2016-08-12 8 views
5

मैं gsub विधि का उपयोग कर '#' वर्ण के साथ एक ईमेल के सभी अल्फान्यूमेरिक वर्णों को प्रतिस्थापित करने का प्रयास कर रहा हूं लेकिन रुबी '@' चरित्र से पहले बैकस्लैश डालने जा रहा है।अनुचित gsub प्रतिस्थापन

उदा:

"[email protected]".gsub(/[a-z0-9]/, "#") रिटर्न "####@###.###" के बजाय "###\#@###.###"

+0

तुम भी उपयोग कर सकते हैं '\ w' metacharacter:' "[email protected]" .gsub (/ \ w /, "#") ' – orde

+0

@ ऑर्डे '\ w' और' [a-z0-9] 'वर्णों के विभिन्न सेट हैं। – mudasobwa

+1

ध्यान दें कि बैकस्लैश '@' से पहले नहीं डाला गया है, लेकिन '' 'पूर्ववर्ती' @ 'से पहले। – Stefan

उत्तर

8

यह रिटर्न "####@###.###" अपेक्षा के अनुरूप, कोशिश करने के लिए:

puts "[email protected]".gsub(/[a-z0-9]/, "#") 

आप आईआरबी/जिज्ञासा में देखते #@ की रोकथाम स्ट्रिंग प्रक्षेप के रूप में व्याख्या की जा रही है।

कृपया नीचे @Stefan द्वारा बहुत मूल्यवान टिप्पणी का भी संदर्भ लें।

+2

अधिक सटीक परिणाम ['स्ट्रिंग # निरीक्षण '] (http://ruby-doc.org/core-2.3.1/String.html#method-i-inspect) का परिणाम। '' '' '' '' '' '' '' '' '' '' '' से बच निकला जाएगा। – Stefan

संबंधित मुद्दे