2011-04-30 17 views
16

को देखते हुए तार की तरह:पिछली कॉमा को कैसे हटाएं?

Bob 
Bob, 
Bob 
Bob Burns, 

आप कैसे लौट सकते हैं कि w/ओ एक अल्पविराम?

Bob 
Bob 
Bob 
Bob Burns 

इसके अलावा, मैं चाहता हूं कि इस विधि को नील पारित करने के लिए तोड़ने के लिए नहीं, सिर्फ एक शून्य वापस करने के लिए?

def remove_trailing_comma(str) 
    !str.nil? ? str.replace(",") :nil 
end 
+0

आपके द्वारा प्रदान किया गया कोड काम नहीं करेगा, क्योंकि आपके पास अल्पविराम के आसपास उद्धरण चिह्न नहीं हैं, और यह '! Str.nil है? ? नहीं '! str.nil?'। अगली बार अपना कोड जांचने के लिए कृपया आईआरबी का उपयोग करें। –

उत्तर

37

मेरे सोचा string.chomp उपयोग करने के लिए होगा:

स्ट्रिंग (यदि मौजूद है) के अंत से हटाए गए रिकॉर्ड विभाजक के साथ एक नया स्ट्रिंग देता है।

क्या यह वही है जो आप चाहते हैं?

def remove_trailing_comma(str) 
    str.nil? ? nil : str.chomp(",") 
end 
+0

बहुत साफ और सुरुचिपूर्ण। धन्यवाद – AnApprentice

+4

इसे लिखने के लिए और अधिक सुरुचिपूर्ण है 'str.chomp (', ') अगर (str) '। –

2

आप कुछ इस तरह कर सकता है:

str && str.sub(/,$/, '') 
+0

धन्यवाद अच्छा लेकिन नाइल्स ने "निजी विधि 'उप' को नील के लिए बुलाया: नील क्लास" – AnApprentice

+1

हाँ मुझे एहसास हुआ कि कोड अपडेट किया गया है। यह अब काम करना चाहिए। वास्तव में चॉम्प विधि शायद बेहतर है: str && str.chomp (",") – robbrit

+0

यह अच्छी तरह से काम करता है। धन्यवाद – AnApprentice

4

उपयोग String#chomp

irb(main):005:0> "Bob".chomp(",") 
=> "Bob" 
irb(main):006:0> "Bob,".chomp(",") 
=> "Bob" 
irb(main):007:0> "Bob Burns,".chomp(",") 
=> "Bob Burns" 

अद्यतन:

def awesome_chomp(str) 
    str.is_a?(String) ? str.chomp(",") : nil 
end 
p awesome_chomp "asd," #=> "asd" 
p awesome_chomp nil #=> nil 
p awesome_chomp Object.new #=> nil 
+0

नाइल्स से निपटने के बारे में क्या? निजी विधि 'chomp' nil के लिए बुलाया जाता है: NilClass): – AnApprentice

+0

'str.respond_to? (स्ट्रिंग) 'को पसंद करने का कोई कारण' str.respond_to? (: chomp)'? –

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