के साथ अजीबता मैं रेल एप्लिकेशन में स्ट्रिंग में गैर शब्द वर्णों को हटाने के लिए gsub
का उपयोग करने का प्रयास कर रहा था। मैं निम्नलिखित कोड का इस्तेमाल किया:gsub
somestring.gsub(/[\W]/i, '') #=> ""
लेकिन यह वास्तव में गलत है, यह पत्र k
रूप में अच्छी तरह निकाल देंगे। सही एक होना चाहिए:
somestring.gsub(/\W/i, '') #=> "kkk"
लेकिन मेरी समस्या यह है कि एक रेल नियंत्रक जो ऊपर कोड का उपयोग कर rspec काम नहीं करता है शामिल की इकाई परीक्षण, इकाई परीक्षण वास्तव में गुजरता है। इसलिए मैं rspec
it "test this gsub" do
'kkk'.gsub(/[\W]/i, '').should == 'kkk'
end
ऊपर परीक्षण का मामला असफल चाहिए में एक सुंदर चरम परीक्षण का मामला बनाया है, लेकिन यह वास्तव में गुजरता है। यहां क्या समस्या है? परीक्षा पास क्यों होगी?
परीक्षण विफल क्यों होगा? जहां तक मैं देख सकता हूं उस कार्य के लिए '/ [\ W]/i' एक पूरी तरह से वैध regexp है। उस मामले में ब्रैकेट अनावश्यक हैं, लेकिन इससे कुछ भी नुकसान नहीं पहुंचाता है। –
क्या आपने वास्तव में 'irb' में अपने regexps को आजमाया था? '" केकेके ".gsub (..) 'यह इस तरह काम करता है, और परिणाम" केकेके "है, इसलिए परीक्षण पास हो जाता है। आप क्या उम्मीद कर रहे हैं परिणाम क्या है? – Casper
@ कैस्पर असल में, 'kkk'.gsub (/ [\ W]/i,' '' चलाते समय '' ''' '' '। तुलनात्मक रूप से, 'kkk'.gsub (/ \ W/i,' '' ''' रिटर्न' 'kkk' 'चल रहा है। –