2009-11-19 18 views
11

मुझे रुबी में स्ट्रिंग को बदलने के साथ कुछ समस्या है।रूबी इस कार्य को कैसे कर सकता है (केस-असंवेदनशील स्ट्रिंग खोज और रूबी में प्रतिस्थापित)?

मेरी मूल स्ट्रिंग: मानव जो करता है वह जानवरों की तरह नहीं है।

मैं इसे प्रतिस्थापित करना चाहता हूं: == क्या == मानव ऐसा नहीं है == क्या == जानवर करता है।

मुझे gsub का उपयोग करते समय केस संवेदनशील होने की समस्या का सामना करना पड़ता है। (उदाहरण के लिए, क्या, मैं) मूल पाठ रखना चाहता हूँ।

कोई समाधान?

+2

एक बेहतर शीर्षक हो सकता है,। इस तरह के शीर्षक में शीर्षक बदलने से आप अपने प्रश्न को और अधिक लोगों को ढूंढने में मदद कर सकते हैं। – donut

उत्तर

20

अगर मैं तुम्हें सही ढंग से समझ में आ यह है कि क्या आप क्या करना चाहते है:

puts "What the human does is not like what animal does.".gsub(/(what)/i, '==\1==') 

जो होगा उत्पादन

== क्या मानव == जैसा नहीं है करता == क्या == पशु करता है।

+0

ब्रायनगेज द्वारा सुझाए गए रेगेक्सपी के मामले में असंवेदनशील ध्वज का उपयोग करके अद्यतन उदाहरण। – hallski

2

block form of gsub का उपयोग करें।

"What the human does is not like what animal does.".gsub(/(what)/i) { |s| "==#{s}==" } 
=> "==What== the human does is not like ==what== animal does." 
+0

मैं वही चीज़ लिख रहा था। यहां gsub दस्तावेज है: http://ruby-doc.org/core/classes/String.html#M000817 –

+0

अपडेट किया गया लिंक: http://ruby-doc.org/core-2.3.3/String.html# विधि-ए-gsub – Josh

2

कोष्ठक() regex में बिना किसी अन्य संस्करण,

puts "What the human does is not like what animal does.".gsub(/what/i,'==\0==') 

== क्या == मानव जैसा नहीं है करता == क्या == पशु करता है।

3

अब तक सभी 3 उत्तरों में ध्यान देने की महत्वपूर्ण बात, नियमित अभिव्यक्ति पर "i" संशोधक का उपयोग है। Regexp::IGNORECASE विकल्प के उपयोग को निर्दिष्ट करने के लिए यह शॉर्टेंड तरीका है।

एक उपयोगी रूबी Regexp ट्यूटोरियल here है और वर्ग "केस-असंवेदी स्ट्रिंग खोज और रूबी में की जगह" प्रलेखित है here

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