2010-10-13 23 views
25

मैं इस कोड पाया से सफेद स्थान को निकालना http://granth.ca/2006/02/strip-whitespaceप्रत्येक सरणी आइटम रेल

लेकिन मुझे लगता है कि एक हैश के लिए है, मैं एक सरणी के साथ भी ऐसा ही करने की कोशिश कर रहा हूँ ।

मैंने कुछ अलग-अलग चीजों की कोशिश की है, लेकिन इसे समझ नहीं सकता है।

सुंदर ज्यादा एक ही किसी भी मदद

उत्तर

58

यह collect है।

yourArray.collect{|x| x.strip || x }

वैकल्पिक रूप से

(शून्य करने के लिए "पहले से ही" छीन "तार बदल जाएगा:।

yourArray.collect(&:strip)

http://apidock.com/ruby/Array/collect

+0

मैं रूबी के लिए वास्तव में नया हूं, लेकिन 'स्ट्रिप' को 'शून्य' वापस नहीं करना चाहिए। '। स्ट्रिप! 'हालांकि रिटर्न' शून्य' अगर यह कुछ भी नहीं पड़ेगा। मैं पुष्टि कर सकता हूं कि इंटरैक्टिव खोल (आईआरबी) के साथ। – Andy

+1

क्या आप समझा सकते हैं कि आपने '|| क्यों किया x'? – maahd

2

के लिए धन्यवाद, केवल आप (a को सरणी (each) और self[a] के प्रत्येक तत्व पर कार्रवाई करने के बाद आप अब और हैश गौर करने की जरूरत नहीं है एक पद्धति के लिए each_key बदल)।

.each {|a| a.strip! if a.respond_to? :strip! } 

संपादित
एक उदाहरण

x = [" 1 ", "b", " c ", 5] 
x.each {|a| a.strip! if a.respond_to? :strip! } 
puts x.inspect 

आउटपुट:

["1", "b", "c", 5] 

स्ट्रिंग पर कोई व्हाइटस्पेस अब समाप्त होता है।

+0

मैं पंक्ति कर रहा हूं। प्रत्येक {| ए | एक पट्टी! अगर a.respond_to? : पट्टी! } (और row2 = row.each {| a | a.strip की कोशिश की है! अगर a.respond_to?: strip!} यह सुनिश्चित करने के लिए कि यह नहीं था, लेकिन आइटमों में अभी भी सफेद स्थान है। सुनिश्चित नहीं है कि यह मदद करता है, लेकिन मैं इसे एक सीएसवी फ़ाइल पर कर रहा हूं जिसे मैं फास्टरसीएसवी के साथ खींच रहा हूं। मैं शायद सीएसवी आउटपुट को साफ़ कर सकता हूं, लेकिन भविष्य के लिए इसे जानने के लिए उपयोगी होगा। –

+0

@Toby क्या आपका मतलब है, यह काम नहीं कर रहा है? मैं एक उदाहरण पोस्ट किया है। –

+0

@Toby (अद्यतन टिप्पणी के लिए) जांचें कि किस प्रकार के सरणी तत्व हैं (उदाहरण के लिए, 'x [0] .class' डालता है)। यदि यह स्ट्रिंग नहीं है, तो आप स्ट्रिंग की' स्ट्रिप 'का उपयोग नहीं कर सकते! उन पर विधि। –

6
YourArray.compact.collect(&:strip) 

आप नहीं के बराबर के साथ कुछ तत्व है, तो

+2

FYI करें आप '' compact' ही Array' पर कॉल करने के लिए नहीं करना चाहती। जैसे 'a.compact.collect अपने जवाब की आपूर्ति कुछ के लिए (और: पट्टी)' या जैमी के जवाब के रूप में yourArray' का उपयोग '। मुझे पता है कि आप छद्म कोड के लिए जा रहे हैं लेकिन यह प्रश्नकर्ता तकनीकी रूप से सटीक होने में सहायक है। –

+1

@ रे-टोल, आप सही हैं! – Gvlamadrid

2

मुझे पता है कि यह देर हो चुकी है लेकिन इस squish के लिए एक आसान कमांड मिला।

myArray.map! {|a| a.squish} कर प्रत्येक सरणी तत्वों से सभी निम्नलिखित और अनुगामी व्हाइट-स्पेस हटेगा।

+1

बस इसे छोटा करने के लिए थोड़ा सा। 'MyArray.collect (और: तोड़ो)' –

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